게시글 관리시 해당 모듈의 최고관리자로 지정된 사용자뿐 아니라 관리 그룹에 속한 대상들도 글 관리 권한을 가지도록 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3491 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-01-07 13:54:51 +00:00
parent f14af52fb3
commit 823ee82b1d
4 changed files with 54 additions and 1 deletions

View file

@ -89,6 +89,10 @@
}
}
// 스팸 처리가 되지 않도록 스팸필터 설정
$oSpamController = &getController('spamfilter');
$oSpamController->setAvoidLog();
if($type == 'move') {
if(!$module_srl) return new Object(-1, 'fail_to_move');

View file

@ -117,10 +117,27 @@
// 최고 관리자가 아닌 경우 자신의 관리 대상 모듈만 구해옴
$logged_info = Context::get('logged_info');
$user_id = $logged_info->user_id;
$group_list = $logged_info->group_list;
if($logged_info->is_admin != 'Y') {
foreach($module_list as $key => $val) {
$info = $oModuleModel->arrangeModuleInfo($val);
if(!in_array($user_id, $info->admin_id)) unset($module_list[$key]);
// 직접 최고 관리자로 지정이 안되어 있으면 그룹을 체크
if(!in_array($user_id, $info->admin_id)) {
$is_granted = false;
$manager_group = $info->grants['manager'];
if(count($group_list) && count($manager_group)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $manager_group)) {
$is_granted = true;
break;
}
}
}
if(!$is_granted) unset($module_list[$key]);
}
}
}
Context::set('module_list', $module_list);

View file

@ -192,6 +192,7 @@
// 사용자 아이디를 구함
$logged_info = Context::get('logged_info');
$user_id = $logged_info->user_id;
$group_list = $logged_info->group_list;
// 모듈 요청에 사용된 변수들을 가져옴
$args = Context::getRequestVars();
@ -206,7 +207,17 @@
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($args->srl);
if(!$module_info) return false;
// 직접 관리자로 선택하였을 경우 확인
if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true;
// 관리자 그룹으로 등록되어 있을 경우 확인
$manager_group = $module_info->grants['manager'];
if(count($group_list) && count($manager_group)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $manager_group)) return true;
}
}
break;
// 체크된 게시글을 관리하는 action
@ -229,6 +240,14 @@
if(!$module_info) return false;
if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true;
// 관리자 그룹으로 등록되어 있을 경우 확인
$manager_group = $module_info->grants['manager'];
if(count($group_list) && count($manager_group)) {
foreach($group_list as $group_srl => $group_info) {
if(in_array($group_srl, $manager_group)) return true;
}
}
}
break;

View file

@ -13,10 +13,19 @@
function init() {
}
/**
* @brief 배치작업등을 할때 스팸필터의 사용을 중지 시킬 필요가 있을 경우 호출
**/
function setAvoidLog() {
$_SESSION['avoid_log'] = true;
}
/**
* @brief 작성시 작성 시간 체크 금지 ip/단어 처리 루틴
**/
function triggerInsertDocument(&$obj) {
if($_SESSION['avoid_log']) return new Object();
// 로그인 여부, 로그인 정보, 권한 유무 체크
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
@ -53,6 +62,8 @@
* @brief 댓글 작성 시간 금지 ip/ 단어 처리 루틴
**/
function triggerInsertComment(&$obj) {
if($_SESSION['avoid_log']) return new Object();
// 로그인 여부, 로그인 정보, 권한 유무 체크
$is_logged = Context::get('is_logged');
$logged_info = Context::get('logged_info');
@ -89,6 +100,8 @@
* @brief 엮인글 작성시 시간 ip 검사
**/
function triggerInsertTrackback(&$obj) {
if($_SESSION['avoid_log']) return new Object();
$oFilterModel = &getModel('spamfilter');
// 해당 글에 엮인글을 한번 이상 추가하였는지를 확인