ObjectAuthorization: Bail early if a role denies a permission

fixes #515
This commit is contained in:
Johannes Meyer 2022-03-30 14:15:20 +02:00
parent 45f2f2aa2f
commit 005193442c

View file

@ -240,16 +240,17 @@ class ObjectAuthorization
return false;
}
$granted = false;
foreach ($this->getAuth()->getUser()->getRoles() as $role) {
if (! $role->grants($permission) || $role->denies($permission)) {
if ($role->denies($permission)) {
return false;
} elseif ($granted || ! $role->grants($permission)) {
continue;
}
if (in_array($role->getName(), $roles, true)) {
return true;
}
$granted = in_array($role->getName(), $roles, true);
}
return false;
return $granted;
}
}