Skip to content
Snippets Groups Projects
Commit 99644584 authored by André Noack's avatar André Noack Committed by Jan-Hendrik Willms
Browse files

Resolve "Sperrzeiten sperren auch globale Raumadmins"

parent 4bf52cfa
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