From 566a3ff8b5c1922975052da416f18fefc77ebc9d Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 03:40:36 +0000 Subject: [PATCH] =?UTF-8?q?#16=20=EC=97=90=EB=94=94=ED=84=B0=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=EC=97=90=20=EA=B7=B8=EB=A3=B9?= =?UTF-8?q?=EB=B3=84=20=EC=82=AC=EC=9A=A9=20=EA=B6=8C=ED=95=9C=EC=9D=84=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3475 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/editor.admin.controller.php | 3 ++ modules/editor/editor.admin.view.php | 6 +++ modules/editor/editor.model.php | 53 ++++++++++++++++++++-- modules/editor/tpl/admin_index.html | 8 +--- modules/editor/tpl/setup_component.html | 10 ++++ 5 files changed, 68 insertions(+), 12 deletions(-) diff --git a/modules/editor/editor.admin.controller.php b/modules/editor/editor.admin.controller.php index 56a23d1ff..2de466aad 100644 --- a/modules/editor/editor.admin.controller.php +++ b/modules/editor/editor.admin.controller.php @@ -85,6 +85,9 @@ unset($extra_vars->component_name); unset($extra_vars->module); unset($extra_vars->act); + unset($extra_vars->body); + + if($extra_vars->target_group) $extra_vars->target_group = explode('|@|', $extra_vars->target_group); $args->component_name = $component_name; $args->extra_vars = serialize($extra_vars); diff --git a/modules/editor/editor.admin.view.php b/modules/editor/editor.admin.view.php index 9333dc4d0..128ddfc2b 100644 --- a/modules/editor/editor.admin.view.php +++ b/modules/editor/editor.admin.view.php @@ -34,10 +34,16 @@ function dispEditorAdminSetupComponent() { $component_name = Context::get('component_name'); + // 에디터 컴포넌트의 정보를 구함 $oEditorModel = &getModel('editor'); $component = $oEditorModel->getComponent($component_name); Context::set('component', $component); + // 그룹 설정을 위한 그룹 목록을 구함 + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + Context::set('group_list', $group_list); + $this->setTemplatePath($this->module_path.'tpl'); $this->setTemplateFile('setup_component'); $this->setLayoutFile("popup_layout"); diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index e5d82e066..521c3f3c6 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -246,6 +246,15 @@ // 파일목록을 구함 $downloaded_list = FileHandler::readDir($this->module_path.'components'); + // 로그인 여부 및 소속 그룹 구함 + $is_logged = Context::get('is_logged'); + if($is_logged) { + $logged_info = Context::get('logged_info'); + if($logged_info->group_list && is_array($logged_info->group_list)) { + $group_list = array_keys($logged_info->group_list); + } else $group_list = array(); + } + // DB 목록을 loop돌면서 xml정보까지 구함 if(!is_array($db_list)) $db_list = array($db_list); foreach($db_list as $component) { @@ -259,10 +268,33 @@ $xml_info = $this->getComponentXmlInfo($component_name); $xml_info->enabled = $component->enabled; - if($component->extra_vars && $xml_info->extra_vars) { + if($component->extra_vars) { $extra_vars = unserialize($component->extra_vars); - foreach($xml_info->extra_vars as $key => $val) { - $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + + // 사용권한이 있으면 권한 체크 + if($extra_vars->target_group) { + // 사용권한이 체크되어 있는데 로그인이 되어 있지 않으면 무조건 사용 중지 + if(!$is_logged) continue; + + // 대상 그룹을 구해서 현재 로그인 사용자의 그룹과 비교 + $target_group = $extra_vars->target_group; + unset($extra_vars->target_group); + + $is_granted = false; + foreach($group_list as $group_srl) { + if(in_array($group_srl, $target_group)) { + $is_granted = true; + break; + } + } + if(!$is_granted) continue; + } + + // 에디터 컴포넌트의 설정 정보를 체크 + if($xml_info->extra_vars) { + foreach($xml_info->extra_vars as $key => $val) { + $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + } } } @@ -309,13 +341,24 @@ $xml_info = $this->getComponentXmlInfo($component_name); $xml_info->enabled = $component->enabled; + $xml_info->target_group = array(); + if($component->extra_vars) { $extra_vars = unserialize($component->extra_vars); - foreach($xml_info->extra_vars as $key => $val) { - $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + + if($extra_vars->target_group) { + $xml_info->target_group = $extra_vars->target_group; + unset($extra_vars->target_group); + } + + if($xml_info->extra_vars) { + foreach($xml_info->extra_vars as $key => $val) { + $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + } } } + return $xml_info; } diff --git a/modules/editor/tpl/admin_index.html b/modules/editor/tpl/admin_index.html index fb39500f0..4204e4c51 100644 --- a/modules/editor/tpl/admin_index.html +++ b/modules/editor/tpl/admin_index.html @@ -75,13 +75,7 @@ {$xml_info->version} {$xml_info->author->name} {$xml_info->author->date} - - - {$lang->cmd_setup} - -   - - + {$lang->cmd_setup} {$lang->cmd_enable} diff --git a/modules/editor/tpl/setup_component.html b/modules/editor/tpl/setup_component.html index 0191d5b7a..bbd8a0016 100644 --- a/modules/editor/tpl/setup_component.html +++ b/modules/editor/tpl/setup_component.html @@ -34,6 +34,16 @@ + + + {$lang->grant} + + +
target_group))-->checked="checked" id="group_{$key}">  
+ + + +