diff options
Diffstat (limited to 'inc')
-rw-r--r-- | inc/user.inc.php | 23 |
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() |