add superadmin dashboard. subscriptions
This commit is contained in:
@@ -34,24 +34,43 @@ class RoleFilter implements FilterInterface
|
||||
|
||||
$access = AccessService::getInstance();
|
||||
|
||||
// Проверка авторизации в организации
|
||||
if (!$access->isAuthenticated()) {
|
||||
// Если пользователь не авторизован в организации - редирект на выбор организации
|
||||
return redirect()->to('/organizations');
|
||||
// Разбор аргументов
|
||||
// Формат: 'role:admin,manager' или 'role:system:superadmin' или 'permission:manage_users:users'
|
||||
|
||||
// Проверка системных ролей (system: prefix)
|
||||
if (is_string($arguments) && str_starts_with($arguments, 'role:system:')) {
|
||||
$roles = explode(',', substr($arguments, 13)); // 13 = длина 'role:system:'
|
||||
$roles = array_map('trim', $roles);
|
||||
|
||||
// Для системных ролей НЕ требуется авторизация в организации
|
||||
if (!$access->isSystemRole($roles)) {
|
||||
return $this->forbiddenResponse();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Разбор аргументов
|
||||
// Формат: 'role:admin,manager' или 'permission:manage_users:users'
|
||||
// Проверка организационных ролей
|
||||
if (is_string($arguments) && str_starts_with($arguments, 'role:')) {
|
||||
$roles = explode(',', substr($arguments, 5));
|
||||
$roles = array_map('trim', $roles);
|
||||
|
||||
// Проверка авторизации в организации
|
||||
if (!$access->isAuthenticated()) {
|
||||
// Если пользователь не авторизован в организации - редирект на выбор организации
|
||||
return redirect()->to('/organizations');
|
||||
}
|
||||
|
||||
if (!$access->isRole($roles)) {
|
||||
return $this->forbiddenResponse();
|
||||
}
|
||||
}
|
||||
|
||||
if (is_string($arguments) && str_starts_with($arguments, 'permission:')) {
|
||||
// Проверка авторизации в организации для разрешений
|
||||
if (!$access->isAuthenticated()) {
|
||||
return redirect()->to('/organizations');
|
||||
}
|
||||
|
||||
$parts = explode(':', substr($arguments, 11));
|
||||
if (count($parts) >= 2) {
|
||||
$permission = $parts[0];
|
||||
|
||||
Reference in New Issue
Block a user