summaryrefslogtreecommitdiffstats
path: root/inc
diff options
context:
space:
mode:
Diffstat (limited to 'inc')
-rw-r--r--inc/user.inc.php23
1 files changed, 21 insertions, 2 deletions
diff --git a/inc/user.inc.php b/inc/user.inc.php
index f7688b00..1e6a2d0e 100644
--- a/inc/user.inc.php
+++ b/inc/user.inc.php
@@ -26,11 +26,30 @@ class User
return self::$user['fullname'];
}
- public static function hasPermission($permission)
+ public static function hasPermission($permission, $locationid = NULL)
{
if (!self::isLoggedIn())
return false;
- return (self::$user['permissions'] & (Permission::get($permission) | Permission::get('superadmin'))) != 0;
+ if (Module::isAvailable("permissionmanager")) {
+ $module = Page::getModule();
+ $permission = $module ? $module->getIdentifier().".".$permission : $permission;
+ return PermissionUtil::userHasPermission(self::$user['userid'], $permission, $locationid);
+ }
+ if (self::$user['permissions'] & Permission::get('superadmin'))
+ return true;
+ return (self::$user['permissions'] & Permission::get($permission)) != 0;
+ }
+
+ public static function getAllowedLocations($permission)
+ {
+ if (Module::isAvailable("permissionmanager")) {
+ $module = Page::getModule();
+ $permission = $module ? $module->getIdentifier().".".$permission : $permission;
+ return PermissionUtil::getAllowedLocations(self::$user['userid'], $permission);
+ }
+ if (self::$user['permissions'] & Permission::get('superadmin'))
+ return array_keys(Location::getLocationsAssoc());
+ return array();
}
public static function load()