Skip to content
Snippets Groups Projects
Commit c66d74dd authored by André Noack's avatar André Noack
Browse files

Resolve "Sperrzeiten sperren auch globale Raumadmins"

parent 335af2fd
No related branches found
No related tags found
No related merge requests found
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
</td> </td>
<td> <td>
<?= htmlReady($permission->perms) ?> <?= htmlReady($permission->perms) ?>
<? if ($current_global_lock and ($permission->perms != 'admin')): ?> <? if ($current_global_lock) : ?>
<?= Icon::create('exclaim', 'attention')->asImg( <?= Icon::create('exclaim', 'attention')->asImg(
'20px', '20px',
[ [
......
...@@ -2287,8 +2287,7 @@ class Resource extends SimpleORMap implements StudipItem ...@@ -2287,8 +2287,7 @@ class Resource extends SimpleORMap implements StudipItem
*/ */
public function getUserPermission(User $user, $time_range = [], $permanent_only = false) public function getUserPermission(User $user, $time_range = [], $permanent_only = false)
{ {
if ($user->perms == 'root') { if (ResourceManager::getGlobalResourcePermission($user) === 'admin') {
//root users are automatically resource admins:
return 'admin'; return 'admin';
} }
...@@ -2357,23 +2356,30 @@ class Resource extends SimpleORMap implements StudipItem ...@@ -2357,23 +2356,30 @@ class Resource extends SimpleORMap implements StudipItem
} }
} }
if (!$perm_string) {
//A user which doesn't have special permissions for this resource
//can have global resource permissions:
$global_perm = ResourceManager::getGlobalResourcePermission($user);
if ($global_perm) {
//Set the permission cache:
if (!is_array(self::$permission_cache[$this->id])) {
self::$permission_cache[$this->id] = [];
}
self::$permission_cache[$this->id][$user->id] = $global_perm;
}
$perm_string = $global_perm;
}
//Now we must check for global resource locks: //Now we must check for global resource locks:
if (GlobalResourceLock::currentlyLocked()) { if (GlobalResourceLock::currentlyLocked()) {
//The resource management system is currently locked. //The resource management system is currently locked.
//We must either return 'admin' for users with that //permission level 'user' for all other permission
//permission level or 'user' for all other permission
//levels. //levels.
if ($perm_string == 'admin') { if ($perm_string) {
return 'admin';
} elseif ($perm_string) {
//A permission level exists for the user. //A permission level exists for the user.
//The user gets "user" permissions in case //The user gets "user" permissions in case
//a global lock is active. //a global lock is active.
return 'user'; $perm_string = 'user';
} else {
//No permission level exists for the user.
return '';
} }
} }
...@@ -2383,17 +2389,7 @@ class Resource extends SimpleORMap implements StudipItem ...@@ -2383,17 +2389,7 @@ class Resource extends SimpleORMap implements StudipItem
return $perm_string; return $perm_string;
} }
//A user which doesn't have special permissions for this resource
//can have global resource permissions:
$global_perm = ResourceManager::getGlobalResourcePermission($user);
if ($global_perm) {
//Set the permission cache:
if (!is_array(self::$permission_cache[$this->id])) {
self::$permission_cache[$this->id] = [];
}
self::$permission_cache[$this->id][$user->id] = $global_perm;
}
return $global_perm;
} }
/** /**
...@@ -2417,8 +2413,8 @@ class Resource extends SimpleORMap implements StudipItem ...@@ -2417,8 +2413,8 @@ class Resource extends SimpleORMap implements StudipItem
return false; return false;
} }
if ($user->perms == 'root') {
//root users have all permissions for the resource. if (ResourceManager::getGlobalResourcePermission($user) === 'admin') {
return true; return true;
} }
...@@ -2435,7 +2431,7 @@ class Resource extends SimpleORMap implements StudipItem ...@@ -2435,7 +2431,7 @@ class Resource extends SimpleORMap implements StudipItem
return false; return false;
} }
} elseif ($permission === 'autor') { } elseif ($permission === 'autor') {
if ($perm_level != 'admin' && GlobalResourceLock::currentlyLocked()) { if (GlobalResourceLock::currentlyLocked()) {
//A global resource lock means no writing actions are permitted. //A global resource lock means no writing actions are permitted.
return false; return false;
} }
...@@ -2445,7 +2441,7 @@ class Resource extends SimpleORMap implements StudipItem ...@@ -2445,7 +2441,7 @@ class Resource extends SimpleORMap implements StudipItem
return false; return false;
} }
} elseif ($permission === 'tutor') { } elseif ($permission === 'tutor') {
if ($perm_level != 'admin' && GlobalResourceLock::currentlyLocked()) { if (GlobalResourceLock::currentlyLocked()) {
//A global resource lock means no writing actions are permitted. //A global resource lock means no writing actions are permitted.
return false; return false;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment