add superadmin dashboard. subscriptions

This commit is contained in:
root
2026-01-13 20:03:16 +03:00
parent 3c24c250e5
commit edb4df7e37
36 changed files with 3329 additions and 100 deletions
+25 -6
View File
@@ -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];