게시판, 블로그의 권한 설정 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@2602 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2007-09-18 06:31:42 +00:00
parent ce4afeaa13
commit 5516f7fec9
6 changed files with 94 additions and 20 deletions

View file

@ -74,16 +74,22 @@
$oModuleModel = &getModel('module');
// document_srl이 있으면 document_srl로 모듈과 모듈 정보를 구함
if($this->document_srl && !$this->mid && !$this->module_srl) $module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
if($this->module && $module_info->module != $this->module) unset($module_info);
if($this->document_srl && !$this->mid && !$this->module_srl) {
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl);
if($this->module && $module_info->module != $this->module) unset($module_info);
}
// 아직 모듈을 못 찾았고 $mid값이 있으면 $mid로 모듈을 구함
if(!$module_info && $this->mid) $module_info = $oModuleModel->getModuleInfoByMid($this->mid);
if($this->module && $module_info->module != $this->module) unset($module_info);
if(!$module_info && $this->mid) {
$module_info = $oModuleModel->getModuleInfoByMid($this->mid);
if($this->module && $module_info->module != $this->module) unset($module_info);
}
// 모듈을 여전히(;;) 못 찾고 $module_srl이 있으면 해당 모듈을 구함
if(!$module_info && $this->module_srl) $module_info = $oModuleModel->getModuleInfoByModuleSrl($this->module_srl);
if($this->module && $module_info->module != $this->module) unset($module_info);
if(!$module_info && $this->module_srl) {
$module_info = $oModuleModel->getModuleInfoByModuleSrl($this->module_srl);
if($this->module && $module_info->module != $this->module) unset($module_info);
}
// 역시 모듈을 못 찾았고 $module이 없다면 기본 모듈을 찾아봄
if(!$module_info && !$this->module) $module_info = $oModuleModel->getModuleInfoByMid();

View file

@ -152,24 +152,19 @@
}
}
// 현재 action값에 따른 최고 관리 권한 부여
if($this->act && $xml_info->permission) {
$permission_target = $xml_info->permission->{$this->act};
if($permission_target && $grant->{$permission_target}) {
foreach($grant as $key => $val) $grant->{$key} = true;
}
}
// act값에 admin이 들어 있는데 관리자가 아닌 경우 오류 표시
if(substr_count($this->act, 'Admin')) {
// 로그인 되어 있지 않다면 무조건 금지
if(!$is_logged) $this->setAct("dispMemberLoginForm");
else {
$permitted = false;
// 최고관리자이면 무조건 패스~
if($grant->is_admin) $permitted = true;
// 최고관리자가 아니더라도 module.xml에서 permission에 등록된 권한이 있으면 허용
$permission_target = $xml_info->permission->{$this->act};
if($permission_target && $grant->{$permission_target}) $permitted = true;
if(!$permitted) return $this->stop('msg_not_permitted_act');
}
elseif(!$grant->is_admin) $this->stop('msg_not_permitted_act');
}
// 권한변수 설정
@ -310,6 +305,7 @@
$kind = strpos(strtolower($forward->act),'admin')!==false?'admin':'';
$oModule = &getModule($forward->module, $forward->type, $kind);
$xml_info = $oModuleModel->getModuleActionXml($forward->module);
debugPrint($forward->act);
$oModule->setAct($forward->act);
$oModule->init();
$oModule->setModuleInfo($this->module_info, $xml_info);

View file

@ -32,6 +32,41 @@
<title xml:lang="jp">管理</title>
</grant>
</grants>
<permissions>
<permission action="dispBlogContent" target="manager" />
<permission action="dispBlogWrite" target="manager" />
<permission action="dispBlogDelete" target="manager" />
<permission action="dispBlogReplyComment" target="manager" />
<permission action="dispBlogModifyComment" target="manager" />
<permission action="dispBlogDeleteComment" target="manager" />
<permission action="dispBlogDeleteTrackback" target="manager" />
<permission action="dispBlogMessage" target="manager" />
<permission action="procBlogInsertDocument" target="manager" />
<permission action="procBlogDeleteDocument" target="manager" />
<permission action="procBlogInsertComment" target="manager" />
<permission action="procBlogDeleteComment" target="manager" />
<permission action="procBlogDeleteTrackback" target="manager" />
<permission action="procBlogVerificationPassword" target="manager" />
<permission action="procBlogDeleteFile" target="manager" />
<permission action="procBlogUploadFile" target="manager" />
<permission action="procBlogDownloadFile" target="manager" />
<permission action="getBlogAdminCategoryTplInfo" target="manager" />
<permission action="dispBlogAdminContent" target="manager" />
<permission action="dispBlogAdminBlogInfo" target="manager" />
<permission action="dispBlogAdminInsertBlog" target="manager" />
<permission action="dispBlogAdminCategoryInfo" target="manager" />
<permission action="dispBlogAdminSkinInfo" target="manager" />
<permission action="procBlogAdminUpdateSkinInfo" target="manager" />
<permission action="procBlogAdminInsertBlog" target="manager" />
<permission action="procBlogAdminInsertCategory" target="manager" />
<permission action="procBlogAdminDeleteCategory" target="manager" />
<permission action="procBlogAdminMakeXmlFile" target="manager" />
<permission action="procBlogAdminMoveCategory" target="manager" />
</permissions>
<actions>
<action name="dispBlogContent" type="view" index="true" />
<action name="dispBlogWrite" type="view" />

View file

@ -16,6 +16,7 @@
<!-- 카테고리의 위/아래, 삭제와 관련된 form -->
<form id="fo_move_category" action="./" method="get">
<input type="hidden" name="module_srl" />
<input type="hidden" name="source_category_srl" />
<input type="hidden" name="target_category_srl" />
</form>

View file

@ -132,6 +132,7 @@ function doInsertCategory(parent_srl) {
function doGetCategoryInfo(category_id, obj) {
// category, category_id, node_srl을 추출
var fo_obj = xGetElementById("fo_category");
var module_srl = fo_obj.module_srl.value;
var node_srl = 0;
var parent_srl = 0;
@ -147,6 +148,7 @@ function doGetCategoryInfo(category_id, obj) {
var params = new Array();
params["category_srl"] = node_srl;
params["parent_srl"] = parent_srl;
params["module_srl"] = module_srl;
// 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다.
var response_tags = new Array('error','message','tpl');
@ -217,9 +219,12 @@ function completeInsertCategory(ret_obj) {
function doMoveTree(category_id, source_category_srl, target_category_srl) {
source_category_srl = source_category_srl.replace(/menu_category_/,'');
target_category_srl = target_category_srl.replace(/menu_category_/,'');
var p_fo_obj = xGetElementById("fo_category");
var fo_obj = xGetElementById("fo_move_category");
fo_obj.source_category_srl.value = source_category_srl;
fo_obj.target_category_srl.value = target_category_srl;
fo_obj.module_srl.value = p_fo_obj.module_srl.value;
// 이동 취소를 선택하였을 경우 다시 그림;;
if(!procFilter(fo_obj, move_category)) {

View file

@ -44,6 +44,37 @@
<title xml:lang="en">manager</title>
</grant>
</grants>
<permissions>
<permission action="dispBoardContent" target="manager" />
<permission action="dispBoardWrite" target="manager" />
<permission action="dispBoardDelete" target="manager" />
<permission action="dispBoardReplyComment" target="manager" />
<permission action="dispBoardModifyComment" target="manager" />
<permission action="dispBoardDeleteComment" target="manager" />
<permission action="dispBoardDeleteTrackback" target="manager" />
<permission action="dispBoardMessage" target="manager" />
<permission action="procBoardInsertDocument" target="manager" />
<permission action="procBoardDeleteDocument" target="manager" />
<permission action="procBoardInsertComment" target="manager" />
<permission action="procBoardDeleteComment" target="manager" />
<permission action="procBoardDeleteTrackback" target="manager" />
<permission action="procBoardDeleteFile" target="manager" />
<permission action="procBoardUploadFile" target="manager" />
<permission action="procBoardDownloadFile" target="manager" />
<permission action="dispBoardAdminInsertBoard" target="manager" />
<permission action="dispBoardAdminBoardInfo" target="manager" />
<permission action="dispBoardAdminSkinInfo" target="manager" />
<permission action="dispBoardAdminCategoryInfo" target="manager" />
<permission action="dispBoardAdminManageDocument" target="manager" />
<permission action="procBoardAdminInsertBoard" target="manager" />
<permission action="procBoardAdminUpdateSkinInfo" target="manager" />
<permission action="procBoardAdminInsertCategory" target="manager" />
<permission action="procBoardAdminUpdateCategory" target="manager" />
<permission action="procBoardAdminManageCheckedDocument" target="manager" />
</permissions>
<actions>
<action name="dispBoardContent" type="view" index="true" />
<action name="dispBoardWrite" type="view" />