mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 17:21:39 +09:00
Optimize Permission management logic
This commit is contained in:
parent
4916a589aa
commit
7cba835065
1 changed files with 12 additions and 24 deletions
|
|
@ -32,13 +32,9 @@ class Permission
|
|||
*/
|
||||
public function __construct(array $xml_grant_list, array $module_grants, ?object $module_info = null, ?object $member_info = null)
|
||||
{
|
||||
// Collect additional information from module and member info.
|
||||
$is_module_admin = !empty($module_info->module_srl) ? \ModuleModel::isModuleAdmin($member_info, $module_info->module_srl) : false;
|
||||
$member_groups = !empty($member_info->group_list) ? array_keys($member_info->group_list) : [];
|
||||
|
||||
// Generate the list of default permissions.
|
||||
$this->_spec = [
|
||||
'access' => '',
|
||||
'access' => 'guest',
|
||||
'root' => 'root',
|
||||
'manager' => 'manager',
|
||||
'is_admin' => 'root',
|
||||
|
|
@ -84,12 +80,6 @@ class Permission
|
|||
}
|
||||
}
|
||||
|
||||
// If the spec says nothing about access permissions, it is 'guest' by default.
|
||||
if (!$this->_spec['access'])
|
||||
{
|
||||
$this->_spec['access'] = 'guest';
|
||||
}
|
||||
|
||||
// If the member is an administrator, grant all possible permissions.
|
||||
if ($member_info && $member_info->is_admin === 'Y')
|
||||
{
|
||||
|
|
@ -100,9 +90,14 @@ class Permission
|
|||
}
|
||||
return;
|
||||
}
|
||||
if ($is_module_admin)
|
||||
|
||||
// If the member is a module manager, fill the scope of management.
|
||||
$manager_scopes = !empty($module_info->module_srl) ? \ModuleModel::isModuleAdmin($member_info, $module_info->module_srl) : false;
|
||||
$member_groups = !empty($member_info->group_list) ? array_keys($member_info->group_list) : [];
|
||||
if ($manager_scopes)
|
||||
{
|
||||
$this->_scopes = $is_module_admin;
|
||||
$this->manager = true;
|
||||
$this->_scopes = $manager_scopes;
|
||||
}
|
||||
|
||||
// Check if each permission is granted to the current user.
|
||||
|
|
@ -118,7 +113,7 @@ class Permission
|
|||
}
|
||||
elseif ($requirement === 'not_member')
|
||||
{
|
||||
$this->{$key} = !($member_info && $member_info->member_srl);
|
||||
$this->{$key} = !($member_info && $member_info->member_srl) || $this->manager;
|
||||
}
|
||||
elseif ($requirement === 'manager')
|
||||
{
|
||||
|
|
@ -130,17 +125,10 @@ class Permission
|
|||
}
|
||||
elseif (is_array($requirement))
|
||||
{
|
||||
if (array_intersect($member_groups, $requirement))
|
||||
$this->{$key} = array_intersect($member_groups, $requirement) ? true : false;
|
||||
if ($key === 'manager' && $this->{$key} === true)
|
||||
{
|
||||
$this->{$key} = true;
|
||||
if ($key === 'manager' && $is_module_admin && !$this->_scopes)
|
||||
{
|
||||
$this->_scopes = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->{$key} = false;
|
||||
$this->_scopes = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue