From 299ee5fecb7046ab224ad4f6552172747053ae16 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 7 Feb 2007 06:50:46 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@5 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/module/Module.class.php | 41 ++++++++ modules/board/board.admin.php | 3 +- modules/board/board.module.php | 7 +- modules/board/skins/default/write_form.html | 2 + modules/member/member.module.php | 98 ++++++++++--------- .../module_manager/module_manager.module.php | 10 +- 6 files changed, 108 insertions(+), 53 deletions(-) diff --git a/classes/module/Module.class.php b/classes/module/Module.class.php index 42eaf89aa..ed028b73c 100644 --- a/classes/module/Module.class.php +++ b/classes/module/Module.class.php @@ -47,6 +47,47 @@ $template_path = $this->module_path.'skins/'.$this->skin; $this->setTemplatePath($template_path); } + + $oMember = getModule('member'); + $user_id = $oMember->getUserID(); + $logged_info = $oMember->getLoggedInfo(); + $user_group = $logged_info->group_list; + $user_group_count = count($user_group); + + // 로그인되어 있다면 admin 체크 + if($oMember->isLogged() && ($logged_info->is_admin == 'Y' || in_array($user_id, $this->module_info->admin_id) )) { + $grant->is_admin = true; + } else { + $grant->is_admin = false; + } + + // 권한 설정 + if($this->grant_list) { + + foreach($this->grant_list as $grant_name) { + $grant->{$grant_name} = false; + + if($grant->is_admin || !$this->module_info->grant[$grant_name]) { + $grant->{$grant_name} = true; + continue; + } + + if($user_group_count) { + foreach($user_group as $group_srl) { + if(in_array($group_srl, $this->module_info->grant[$grant_name])) { + $grant->{$grant_name} = true; + break; + } + } + } + } + } + + // 권한변수 설정 + Context::set('grant',$grant); + + // 모듈의 init method 실행 + $this->init(); }/*}}}*/ // public boolean isExistsAct($act)/*{{{*/ diff --git a/modules/board/board.admin.php b/modules/board/board.admin.php index 69ea95820..570e9586a 100644 --- a/modules/board/board.admin.php +++ b/modules/board/board.admin.php @@ -381,7 +381,8 @@ if(count($grant_list)) { foreach($grant_list as $grant) { - $arr_grant[$grant] = explode(',',Context::get($grant)); + $group_srls = Context::get($grant); + if($group_srls) $arr_grant[$grant] = explode(',',Context::get($grant)); } $grant = serialize($arr_grant); } diff --git a/modules/board/board.module.php b/modules/board/board.module.php index 059ea10c0..dadbb4c1f 100644 --- a/modules/board/board.module.php +++ b/modules/board/board.module.php @@ -52,12 +52,12 @@ // 초기화 function init() {/*{{{*/ + // lang + Context::loadLang($this->template_path.'lang/'); }/*}}}*/ // disp 초기화 function dispInit() {/*{{{*/ - // lang - Context::loadLang($this->template_path.'lang/'); // 카테고리를 사용한다면 카테고리 목록을 구해옴 if($this->module_info->use_category=='Y') { @@ -77,9 +77,6 @@ // proc 초기화 function procInit() {/*{{{*/ - // lang - Context::loadLang($this->template_path.'lang/'); - // 파일 업로드일 경우 $act값을 procUploadFile() 로 변경 if(Context::isUploaded()) $this->act = 'procUploadFile'; diff --git a/modules/board/skins/default/write_form.html b/modules/board/skins/default/write_form.html index 88fb36614..d1380bb7a 100644 --- a/modules/board/skins/default/write_form.html +++ b/modules/board/skins/default/write_form.html @@ -64,7 +64,9 @@ {$lang->content} + + diff --git a/modules/member/member.module.php b/modules/member/member.module.php index 54761b5d1..f19a7409a 100644 --- a/modules/member/member.module.php +++ b/modules/member/member.module.php @@ -111,6 +111,60 @@ return new Output(); }/*}}}*/ + // 사용자 정보 + // public object getLoggedInfo()/*{{{*/ + // user_id에 해당하는 사용자 정보 return + function getLoggedInfo() { + // 로그인 되어 있고 세션 정보를 요청하면 세션 정보를 return + if($this->isLogged()) return $_SESSION['logged_info']; + }/*}}}*/ + + // public object getMemberInfo($user_id)/*{{{*/ + // user_id에 해당하는 사용자 정보 return + function getMemberInfo($user_id) { + // DB에서 가져오기 + $oDB = &DB::getInstance(); + $args->user_id = $user_id; + $output = $oDB->executeQuery('member.getMemberInfo', $args); + if(!$output) return $output; + + $member_info = $output->data; + $member_info->group_list = $this->getMemberGroups($member_info->member_srl); + + return $member_info; + }/*}}}*/ + + // public object getMemberInfoByMemberSrl($member_srl)/*{{{*/ + // user_id에 해당하는 사용자 정보 return + function getMemberInfoByMemberSrl($member_srl) { + // DB에서 가져오기 + $oDB = &DB::getInstance(); + $args->member_srl = $member_srl; + $output = $oDB->executeQuery('member.getMemberInfoByMemberSrl', $args); + if(!$output) return $output; + + $member_info = $output->data; + $member_info->group_list = $this->getMemberGroups($member_info->member_srl); + + return $member_info; + }/*}}}*/ + + // public int getMemberSrl() /*{{{*/ + // 현재 접속자의 member_srl을 return + function getMemberSrl() { + if(!$this->isLogged()) return; + return $_SESSION['member_srl']; + }/*}}}*/ + + // public int getUserID() /*{{{*/ + // 현재 접속자의 user_id을 return + function getUserID() { + if(!$this->isLogged()) return; + $logged_info = $_SESSION['logged_info']; + return $logged_info->user_id; + }/*}}}*/ + + // member 정보 입출력 관련 // public void insertAdmin($args)/*{{{*/ // 관리자를 추가한다 @@ -234,50 +288,6 @@ return false; }/*}}}*/ - // public object getLoggedInfo()/*{{{*/ - // user_id에 해당하는 사용자 정보 return - function getLoggedInfo() { - // 로그인 되어 있고 세션 정보를 요청하면 세션 정보를 return - if($this->isLogged()) return $_SESSION['logged_info']; - }/*}}}*/ - - // public object getMemberInfo($user_id)/*{{{*/ - // user_id에 해당하는 사용자 정보 return - function getMemberInfo($user_id) { - // DB에서 가져오기 - $oDB = &DB::getInstance(); - $args->user_id = $user_id; - $output = $oDB->executeQuery('member.getMemberInfo', $args); - if(!$output) return $output; - - $member_info = $output->data; - $member_info->group_list = $this->getMemberGroups($member_info->member_srl); - - return $member_info; - }/*}}}*/ - - // public object getMemberInfoByMemberSrl($member_srl)/*{{{*/ - // user_id에 해당하는 사용자 정보 return - function getMemberInfoByMemberSrl($member_srl) { - // DB에서 가져오기 - $oDB = &DB::getInstance(); - $args->member_srl = $member_srl; - $output = $oDB->executeQuery('member.getMemberInfoByMemberSrl', $args); - if(!$output) return $output; - - $member_info = $output->data; - $member_info->group_list = $this->getMemberGroups($member_info->member_srl); - - return $member_info; - }/*}}}*/ - - // public int getMemberSrl() /*{{{*/ - // 현재 접속자의 member_srl을 return - function getMemberSrl() { - if(!$this->isLogged()) return; - return $_SESSION['member_srl']; - }/*}}}*/ - // group 관련 // public object addMemberToGroup($member_srl, $group_srl) /*{{{*/ // member_srl에 gruop_srl을 추가 diff --git a/modules/module_manager/module_manager.module.php b/modules/module_manager/module_manager.module.php index da5ba16a5..3ec7175be 100644 --- a/modules/module_manager/module_manager.module.php +++ b/modules/module_manager/module_manager.module.php @@ -92,9 +92,9 @@ $output = $oDB->executeQuery('module_manager.getMidInfo', $args); if(!$output->data) return; return module_manager::arrangeModuleInfo($output->data); - } + }/*}}}*/ - // public object arrangeModuleInfo($source_module_info) + // public object arrangeModuleInfo($source_module_info)/*{{{*/ // grant, extraVar등의 정리 function arrangeModuleInfo($source_module_info) { if(!$source_module_info) return; @@ -119,6 +119,11 @@ // 권한의 정리 if($grant) $module_info->grant = unserialize($grant); + // 관리자 아이디의 정리 + if($module_info->admin_id) { + $module_info->admin_id = explode(',',$module_info->admin_id); + } + return $module_info; }/*}}}*/ @@ -143,7 +148,6 @@ $eval_str = sprintf('$oModule = new %s();', $module); eval($eval_str); $oModule->setModulePath($class_path); - $oModule->init(); // 언어파일 읽기 Context::loadLang($class_path.'lang');