From e88d20d0816684caebaf3b4ce2123f26803697d6 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 13 Sep 2017 10:45:41 +0200 Subject: [PATCH] Fix permission tables --- Admin/Installer.php | 36 +++++++++++++---------------- Models/AccountMapper.php | 20 ---------------- Models/PermissionManager.php | 44 ++++++++---------------------------- 3 files changed, 25 insertions(+), 75 deletions(-) diff --git a/Admin/Installer.php b/Admin/Installer.php index 89cc307..1204138 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -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;' diff --git a/Models/AccountMapper.php b/Models/AccountMapper.php index e78b74e..4c180d1 100644 --- a/Models/AccountMapper.php +++ b/Models/AccountMapper.php @@ -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()); diff --git a/Models/PermissionManager.php b/Models/PermissionManager.php index dc69869..78741ea 100644 --- a/Models/PermissionManager.php +++ b/Models/PermissionManager.php @@ -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; } }