코드 정리

This commit is contained in:
conory 2017-04-10 14:58:31 +09:00
parent 9df5c915a8
commit ddc7d31661

View file

@ -221,7 +221,7 @@ class ModuleObject extends Object
}
// Check permission
if($this->checkPermission($grant, false) !== true)
if($this->checkPermission($grant) !== true)
{
$this->stop('msg_not_permitted_act');
return false;
@ -254,11 +254,10 @@ class ModuleObject extends Object
/**
* Check permission
* @param object $grant privileges(granted) information of user
* @param object $find if user doesn't have privilege(granted), find more privilege of the user
* @param object $member_info member information
* @return boolean success : true, fail : false
* */
function checkPermission($grant = null, $find = true, $member_info = null)
function checkPermission($grant = null, $member_info = null)
{
// Get logged-in member information
if(!$member_info)
@ -281,79 +280,76 @@ class ModuleObject extends Object
// Get permission types(guest, member, manager, root) of the currently requested action
$permission = $this->xml_info->permission->{$this->act};
// If permission is 'guest', Pass
if($permission == 'guest')
{
return true;
}
// If admin action, set default permission
if(empty($permission) && stripos($this->act, 'admin') !== false)
{
$permission = 'root';
}
// If 'act' have permission, but user does not have privilege(granted), error
if($permission)
// If permission is not or 'guest', Pass
if(empty($permission) || $permission == 'guest')
{
// If permission is 'member', check logged-in
if($permission == 'member')
return true;
}
// If permission is 'member', check logged-in
else if($permission == 'member')
{
if(Context::get('is_logged'))
{
if(!Context::get('is_logged'))
return true;
}
}
// If permission is 'manager', check 'is user have manager privilege(granted)'
else if(preg_match('/^(manager|([a-z0-9\_]+)-managers)$/', $permission, $type))
{
if($grant->manager)
{
return true;
}
// If permission is '*-managers', search modules to find manager privilege of the member
if(Context::get('is_logged') && isset($type[2]))
{
// Manager privilege of the member is found by search all modules, Pass
if($type[2] == 'all' && getModel('module')->findManagerPrivilege($member_info) !== false)
{
return false;
return true;
}
}
// If permission is 'manager', check 'is user have manager privilege(granted)'
else if(preg_match('/^(manager|([a-z0-9\_]+)-managers)$/', $permission, $type))
{
if(!$grant->manager)
// Manager privilege of the member is found by search same module as this module, Pass
else if($type[2] == 'same' && getModel('module')->findManagerPrivilege($member_info, $this->module) !== false)
{
// If permission is '*-managers', search modules to find manager privilege of the member
if(Context::get('is_logged') && $find && isset($type[2]))
{
// Manager privilege of the member is found by search all modules, Pass
if($type[2] == 'all' && getModel('module')->findManagerPrivilege($member_info) !== false)
{
return true;
}
// Manager privilege of the member is found by search same module as this module, Pass
else if($type[2] == 'same' && getModel('module')->findManagerPrivilege($member_info, $this->module) !== false)
{
return true;
}
// Manager privilege of the member is found by search same module as the module, Pass
else if(getModel('module')->findManagerPrivilege($member_info, $type[2]) !== false)
{
return true;
}
}
return false;
return true;
}
}
// If permission is 'root', Error!
// Because an administrator who have root privilege(granted) was passed already
else if($permission == 'root')
{
return false;
}
// If grant name, check the privilege(granted) of the user
else if($grant_names = explode(',', $permission))
{
$privilege_list = array_keys((array) $this->xml_info->grant);
foreach($grant_names as $name)
// Manager privilege of the member is found by search same module as the module, Pass
else if(getModel('module')->findManagerPrivilege($member_info, $type[2]) !== false)
{
if(!in_array($name, $privilege_list) || !$grant->$name)
{
return false;
}
return true;
}
}
}
// If permission is 'root', false
// Because an administrator who have root privilege(granted) was passed already
else if($permission == 'root')
{
return false;
}
// If grant name, check the privilege(granted) of the user
else if($grant_names = explode(',', $permission))
{
$privilege_list = array_keys((array) $this->xml_info->grant);
foreach($grant_names as $name)
{
if(!in_array($name, $privilege_list) || !$grant->$name)
{
return false;
}
}
return true;
}
return true;
return false;
}
/**