From 8e151d7cfab34683df4f10702f2a3f0de7c923e6 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 22 May 2025 00:52:27 +0900 Subject: [PATCH] Add not_member option to grant selection #2499 --- modules/menu/tpl/sitemap.html | 9 +++++-- modules/module/lang/en.php | 7 +++--- modules/module/lang/ko.php | 5 ++-- modules/module/models/Permission.php | 24 +++++++++++-------- modules/module/module.admin.model.php | 6 +++-- .../tpl/include.module_grant_setup.html | 5 ++-- modules/module/tpl/module_grants.html | 5 ++-- 7 files changed, 38 insertions(+), 23 deletions(-) diff --git a/modules/menu/tpl/sitemap.html b/modules/menu/tpl/sitemap.html index a61286cf1..5f6dc29eb 100644 --- a/modules/menu/tpl/sitemap.html +++ b/modules/menu/tpl/sitemap.html @@ -680,6 +680,7 @@ @@ -2328,7 +2329,8 @@ jQuery(function($){ var htGrantStrToSelectValMap = { 'all': '0', 'member': '-1', - 'site': '-2', + 'site': '-1', + 'not_member': '-4', 'manager': '-3', 'group': '-10' }; @@ -2366,7 +2368,7 @@ jQuery(function($){ /* guest : 모든 옵션 사용 가능, 항상 권한 있음. member : '모든 사용자' 제외하고 사용 가능, 로그인 정보가 있을 경우 true - site : '모든 사용자' 제외하고 사용 가능, 가상 사이트일 경우에는 가입된 그룹 정보가 있어야 하며, 가상 사이트가 아닐 경우에는 'member'와 동일. + not_member : 비로그인 사용자, 로그인 정보가 *없을* 경우 true manager : '관리자만','선택그룹 사용자' 옵션만 사용가능, 관리자일 경우에만 true root : manager와 동일. */ @@ -2377,6 +2379,9 @@ jQuery(function($){ case 'member': $node.find('._group_all').remove(); break; + case 'not_member': + $node.find('._group_all').remove(); + break; case 'site': $node.find('._group_all').remove(); break; diff --git a/modules/module/lang/en.php b/modules/module/lang/en.php index d9172183d..84b82034f 100644 --- a/modules/module/lang/en.php +++ b/modules/module/lang/en.php @@ -46,11 +46,12 @@ $lang->header_script = 'Header Script'; $lang->about_header_script = 'You can input the html script between <header> and </header> by yourself. You can use <script>, <style> or <meta> tags.'; $lang->grant_access = 'Access'; $lang->grant_manager = 'Management'; -$lang->grant_to_all = 'All users'; -$lang->grant_to_login_user = 'Login users'; +$lang->grant_to_all = 'Everyone'; +$lang->grant_to_login_user = 'Logged in users'; +$lang->grant_to_non_login_user = 'Logged out users'; $lang->grant_to_site_user = 'Registered users'; $lang->grant_to_admin = 'Administrator only'; -$lang->grant_to_group = 'Selected group users'; +$lang->grant_to_group = 'Selected group members'; $lang->cmd_add_shortcut = 'Add Shortcut'; $lang->cmd_install = 'Install'; $lang->cmd_create_db_table = 'Create DB Table'; diff --git a/modules/module/lang/ko.php b/modules/module/lang/ko.php index 212f0a39a..512e752df 100644 --- a/modules/module/lang/ko.php +++ b/modules/module/lang/ko.php @@ -46,11 +46,12 @@ $lang->header_script = '헤더 스크립트'; $lang->about_header_script = 'HTML <head>...</head> 사이에 들어가는 코드를 직접 입력할 수 있습니다. 예) <script>, <style>, <meta> '; $lang->grant_access = '접근 권한'; $lang->grant_manager = '관리 권한'; -$lang->grant_to_all = '모든 사용자'; +$lang->grant_to_all = '모든 방문자'; $lang->grant_to_login_user = '로그인 사용자'; +$lang->grant_to_non_login_user = '비로그인 사용자'; $lang->grant_to_site_user = '가입한 사용자'; $lang->grant_to_admin = '관리자만'; -$lang->grant_to_group = '선택 그룹 사용자'; +$lang->grant_to_group = '선택 그룹 소속 회원'; $lang->cmd_add_shortcut = '바로가기 추가'; $lang->cmd_install = '설치'; $lang->cmd_create_db_table = 'DB Table 생성하기'; diff --git a/modules/module/models/Permission.php b/modules/module/models/Permission.php index 642dcd512..8ddfc947b 100644 --- a/modules/module/models/Permission.php +++ b/modules/module/models/Permission.php @@ -37,7 +37,7 @@ class Permission $member_groups = !empty($member_info->group_list) ? array_keys($member_info->group_list) : []; // Generate the list of default permissions. - $defaults = [ + $this->_spec = [ 'access' => '', 'root' => 'root', 'manager' => 'manager', @@ -46,11 +46,10 @@ class Permission ]; foreach ($xml_grant_list as $key => $val) { - $defaults[$key] = $val->default ?? ''; + $this->_spec[$key] = $val->default ?? ''; } - // Generate the combined spec for this module. - $this->_spec = $defaults; + // Override the defaults with user settings. foreach ($module_grants as $row) { $key = $row->name; @@ -64,6 +63,11 @@ class Permission $this->_spec[$key] = 'member'; continue; } + if ($row->group_srl == -4) + { + $this->_spec[$key] = 'not_member'; + continue; + } if ($row->group_srl == -3) { $this->_spec[$key] = 'manager'; @@ -90,19 +94,15 @@ class Permission if ($member_info && $member_info->is_admin === 'Y') { $this->_scopes = true; - foreach ($defaults as $key => $default) + foreach ($this->_spec as $key => $requirement) { $this->{$key} = true; } return; } - elseif ($is_module_admin) + if ($is_module_admin) { $this->_scopes = $is_module_admin; - foreach ($defaults as $key => $default) - { - $this->{$key} = ($default !== 'root'); - } } // Check if each permission is granted to the current user. @@ -116,6 +116,10 @@ class Permission { $this->{$key} = ($member_info && $member_info->member_srl); } + elseif ($requirement === 'not_member') + { + $this->{$key} = !($member_info && $member_info->member_srl); + } elseif ($requirement === 'manager') { $this->{$key} = $this->manager ? true : false; diff --git a/modules/module/module.admin.model.php b/modules/module/module.admin.model.php index d2e80c83f..6c2c60e69 100644 --- a/modules/module/module.admin.model.php +++ b/modules/module/module.admin.model.php @@ -182,7 +182,8 @@ class ModuleAdminModel extends Module { if($val->group_srl == 0) $default_grant[$val->name] = 'all'; else if($val->group_srl == -1) $default_grant[$val->name] = 'member'; - else if($val->group_srl == -2) $default_grant[$val->name] = 'site'; + else if($val->group_srl == -2) $default_grant[$val->name] = 'member'; + else if($val->group_srl == -4) $default_grant[$val->name] = 'not_member'; else if($val->group_srl == -3) $default_grant[$val->name] = 'manager'; else { @@ -260,7 +261,8 @@ class ModuleAdminModel extends Module { if($val->group_srl == 0) $defaultGrant->{$val->name} = 'all'; else if($val->group_srl == -1) $defaultGrant->{$val->name} = 'member'; - else if($val->group_srl == -2) $defaultGrant->{$val->name} = 'site'; + else if($val->group_srl == -2) $defaultGrant->{$val->name} = 'member'; + else if($val->group_srl == -4) $defaultGrant->{$val->name} = 'not_member'; else if($val->group_srl == -3) $defaultGrant->{$val->name} = 'manager'; else { diff --git a/modules/module/tpl/include.module_grant_setup.html b/modules/module/tpl/include.module_grant_setup.html index 0cd3eb457..42b05410b 100644 --- a/modules/module/tpl/include.module_grant_setup.html +++ b/modules/module/tpl/include.module_grant_setup.html @@ -13,8 +13,9 @@
diff --git a/modules/module/tpl/module_grants.html b/modules/module/tpl/module_grants.html index 8a148f2fd..9c6aab3ac 100644 --- a/modules/module/tpl/module_grants.html +++ b/modules/module/tpl/module_grants.html @@ -58,8 +58,9 @@