diff --git a/Models/PermissionManager.php b/Models/PermissionManager.php new file mode 100644 index 0000000..dc69869 --- /dev/null +++ b/Models/PermissionManager.php @@ -0,0 +1,87 @@ +id = $id; + $this->permissions = $permissions; + } + + public function getId() : int + { + return $this->id; + } + + public function hasPermission(int $permission, int $unit = null, int $app = null, int $module = null, int $type = null, $element = 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()) { + return true; + } + } + + return false; + } +}