Add not_member option to grant selection #2499

This commit is contained in:
Kijin Sung 2025-05-22 00:52:27 +09:00
parent c89af17410
commit 8e151d7cfa
7 changed files with 38 additions and 23 deletions

View file

@ -680,6 +680,7 @@
<select id="auth${PermId}">
<option class="_group_all" value="0">{$lang->grant_to_all}</option>
<option class="_group_loggedin" value="-1">{$lang->grant_to_login_user}</option>
<option class="_group_not_loggedin" value="-4">{$lang->grant_to_non_login_user}</option>
<option class="_group_manager" value="-3">{$lang->grant_to_admin}</option>
<option class="_group_selected" value="-10">{$lang->grant_to_group}</option>
</select>
@ -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;

View file

@ -46,11 +46,12 @@ $lang->header_script = 'Header Script';
$lang->about_header_script = 'You can input the html script between &lt;header&gt; and &lt;/header&gt; by yourself. You can use &lt;script&gt;, &lt;style&gt; or &lt;meta&gt; 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';

View file

@ -46,11 +46,12 @@ $lang->header_script = '헤더 스크립트';
$lang->about_header_script = 'HTML &lt;head&gt;...&lt;/head&gt; 사이에 들어가는 코드를 직접 입력할 수 있습니다. 예) &lt;script&gt;, &lt;style&gt;, &lt;meta&gt; ';
$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 생성하기';

View file

@ -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;

View file

@ -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
{

View file

@ -13,8 +13,9 @@
<label class="x_control-label" for="{$grant_name}_default">{$grant_item->title}</label>
<div class="x_controls">
<select name="{$grant_name}_default" id="{$grant_name}_default" class="grant_default">
<option value="0" cond="$grant_item->default == 'guest'">{$lang->grant_to_all}</option>
<option value="-1" cond="$grant_item->default != 'manager'">{$lang->grant_to_login_user}</option>
<option value="0">{$lang->grant_to_all}</option>
<option value="-1">{$lang->grant_to_login_user}</option>
<option value="-4">{$lang->grant_to_non_login_user}</option>
<option value="-3">{$lang->grant_to_admin}</option>
<option value="">{$lang->grant_to_group}</option>
</select>

View file

@ -58,8 +58,9 @@
<label for="{$grant_name}_default" class="x_control-label">{$grant_item->title}</label>
<div class="x_controls">
<select name="{$grant_name}_default" id="{$grant_name}_default" class="grant_default">
<!--@if($grant_item->default == 'guest')--><option value="0" <!--@if($default_grant[$grant_name]=='all')-->selected="selected"<!--@end-->>{$lang->grant_to_all}</option><!--@end-->
<!--@if($grant_item->default != 'manager')--><option value="-1" <!--@if($default_grant[$grant_name]=='member' || $default_grant[$grant_name]=='site')-->selected="selected"<!--@end-->>{$lang->grant_to_login_user}</option><!--@end-->
<option value="0" <!--@if($default_grant[$grant_name]=='all')-->selected="selected"<!--@end-->>{$lang->grant_to_all}</option>
<option value="-1" <!--@if($default_grant[$grant_name]=='member' || $default_grant[$grant_name]=='site')-->selected="selected"<!--@end-->>{$lang->grant_to_login_user}</option>
<option value="-4" <!--@if($default_grant[$grant_name]=='not_member')-->selected="selected"<!--@end-->>{$lang->grant_to_non_login_user}</option>
<option value="-3" <!--@if($default_grant[$grant_name]=='manager')-->selected="selected"<!--@end-->>{$lang->grant_to_admin}</option>
<option value="" <!--@if($default_grant[$grant_name]=='group')-->selected="selected"<!--@end-->>{$lang->grant_to_group}</option>
</select>