public function isAllowed($module, $permissionLevel, $element = null, $entity = null) { if ($this->user->getRole() == "admin") { return true; } if (!isset($this->roles[$this->user->getRole()])) { return false; } $role = $this->roles[$this->user->getRole()]; $allowed = false; if (!isset($role['modules'][$module])) { return false; } if ($role['modules'][$module]['global'] >= $permissionLevel) { $allowed = true; } if ($element && isset($role['modules'][$module]['elements'][$element])) { if ($role['modules'][$module]['elements'][$element] > $role['modules'][$module]['global']) { throw new \Exception("You cannot set element permission bigger than global permission."); } else { if ($role['modules'][$module]['elements'][$element] >= $permissionLevel) { $allowed = true; } else { $allowed = false; } } } return $allowed; }