Fix permission tables

This commit is contained in:
Dennis Eichhorn 2017-09-13 10:45:41 +02:00
parent f447df709d
commit e88d20d081
3 changed files with 25 additions and 75 deletions

View File

@ -81,16 +81,14 @@ class Installer extends InstallerAbstract
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'group_permission` (
`group_permission_id` int(11) NOT NULL AUTO_INCREMENT,
`group_permission_group` int(11) NOT NULL,
`group_permission_from` varchar(50) DEFAULT NULL,
`group_permission_for` varchar(50) DEFAULT NULL,
`group_permission_id1` int(11) DEFAULT NULL,
`group_permission_id2` int(11) DEFAULT NULL,
`group_permission_id3` int(11) DEFAULT NULL,
`group_permission_r` int(1) DEFAULT NULL,
`group_permission_w` int(1) DEFAULT NULL,
`group_permission_m` int(1) DEFAULT NULL,
`group_permission_d` int(1) DEFAULT NULL,
`group_permission_p` int(1) DEFAULT NULL,
`group_permission_unit` int(11) DEFAULT NULL,
`group_permission_app` int(11) DEFAULT NULL,
`group_permission_module` int(11) DEFAULT NULL,
`group_permission_from` int(11) DEFAULT NULL,
`group_permission_type` int(11) DEFAULT NULL,
`group_permission_element` int(11) DEFAULT NULL,
`group_permission_component` int(11) DEFAULT NULL,
`group_permission_permission` int(11) DEFAULT NULL,
PRIMARY KEY (`group_permission_id`),
KEY `group_permission_group` (`group_permission_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
@ -212,16 +210,14 @@ class Installer extends InstallerAbstract
'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'account_permission` (
`account_permission_id` int(11) NOT NULL AUTO_INCREMENT,
`account_permission_account` int(11) NOT NULL,
`account_permission_from` varchar(50) DEFAULT NULL,
`account_permission_for` varchar(50) DEFAULT NULL,
`account_permission_id1` int(11) DEFAULT NULL,
`account_permission_id2` int(11) DEFAULT NULL,
`account_permission_id3` int(11) DEFAULT NULL,
`account_permission_r` int(1) DEFAULT NULL,
`account_permission_w` int(1) DEFAULT NULL,
`account_permission_m` int(1) DEFAULT NULL,
`account_permission_d` int(1) DEFAULT NULL,
`account_permission_p` int(1) DEFAULT NULL,
`account_permission_unit` int(11) DEFAULT NULL,
`account_permission_app` int(11) DEFAULT NULL,
`account_permission_module` int(11) DEFAULT NULL,
`account_permission_from` int(11) DEFAULT NULL,
`account_permission_type` int(11) DEFAULT NULL,
`account_permission_element` int(11) DEFAULT NULL,
`account_permission_component` int(11) DEFAULT NULL,
`account_permission_permission` int(11) DEFAULT NULL,
PRIMARY KEY (`account_permission_id`),
KEY `account_permission_account` (`account_permission_account`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'

View File

@ -88,26 +88,6 @@ class AccountMapper extends DataMapperAbstract
if($objId === null || !is_scalar($objId)) {
return $objId;
}
$query = new Builder(self::$db);
$query->prefix(self::$db->getPrefix())
->insert(
'account_permission_account',
'account_permission_from',
'account_permission_for',
'account_permission_id1',
'account_permission_id2',
'account_permission_r',
'account_permission_w',
'account_permission_m',
'account_permission_d',
'account_permission_p'
)
->into('account_permission')
->values(1, 'account', 'account', 1, $objId, 1, 1, 1, 1, 1);
self::$db->con->prepare($query->toSql())->execute();
} catch (\Exception $e) {
var_dump($e->getMessage());

View File

@ -42,42 +42,16 @@ class PermissionManager
return $this->id;
}
public function hasPermission(int $permission, int $unit = null, int $app = null, int $module = null, int $type = null, $element = null) : bool
public function hasPermission(int $permission, int $unit = null, int $app = null, int $module = null, int $type = null, $element = null, $component = null) : bool
{
if(!isset($unit, $app, $module, $type, $element)) {
return ($permission | $this->permissions['permission']->getPermission()) === $this->permissions['permission']->getPermission();
} elseif(isset($unit) && !isset($app, $module, $type, $element)) {
return ($permission | $this->permissions['permission']->getPermission()) === $this->permissions['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['permission']->getPermission()) === $this->permissions['unit'][$unit]['permission']->getPermission();
} elseif(isset($unit, $app) && !isset($module, $type, $element)) {
return ($permission | $this->permissions['permission']->getPermission()) === $this->permissions['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['permission']->getPermission()) === $this->permissions['unit'][$unit]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission();
} elseif(isset($unit, $app, $module) && !isset($type, $element)) {
return ($permission | $this->permissions['permission']->getPermission()) === $this->permissions['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['permission']->getPermission()) === $this->permissions['unit'][$unit]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['permission']->getPermission();
} elseif(isset($unit, $app, $module, $type) && !isset($element)) {
return ($permission | $this->permissions['permission']->getPermission()) === $this->permissions['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['permission']->getPermission()) === $this->permissions['unit'][$unit]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['type'][$type]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['type'][$type]['permission']->getPermission();
} elseif(isset($unit, $app, $module, $type) && !isset($element)) {
return ($permission | $this->permissions['permission']->getPermission()) === $this->permissions['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['permission']->getPermission()) === $this->permissions['unit'][$unit]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['type'][$type]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['type'][$type]['permission']->getPermission()
|| ($permission | $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['type'][$type]['element'][$element]['permission']->getPermission()) === $this->permissions['unit'][$unit]['app'][$app]['module'][$mdoule]['type'][$type]['element'][$element]['permission']->getPermission();
}
}
public function hasPermission2(int $permission, int $unit = null, int $app = null, int $module = null, int $type = null, $element = null) : bool
{
foreach($this->permissions as $permission) {
if(($permissions | $permission->getPermission()) === $permission->getPermission()) {
foreach($this->permissions as $p) {
if(($p->getUnit() === $unit || $p->getUnit() === null)
&& ($p->getApp() === $app || $p->getApp() === null)
&& ($p->getModule() === $module || $p->getModule() === null)
&& ($p->getType() === $type || $p->getType() === null)
&& ($p->getElement() === $element || $p->getElement() === null)
&& ($p->getComponent() === $component || $p->getComponent() === null)
&& ($permissions | $p->getPermission()) === $p->getPermission()) {
return true;
}
}