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

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

View file

@ -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 생성하기';

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>