Перейти к содержанию

API Map: Управление Ролями и Доступом

Этот документ описывает карту API-методов, необходимых для полноценной работы ролевой модели в системе Архыз.CLUB.

1. Аутентификация и Контекст Пользователя

Базовые методы для получения информации о правах текущего пользователя и управления его активной сессией.

Метод Путь Описание Доступ
GET /auth/current-user-roles Получение полных данных о ролях текущего пользователя (список, флаги, активная роль). Используется фронтендом и Edge-функциями. Authenticated
GET /auth/me/roles Легковесная версия для проверки прав (используется внешними сервисами). Authenticated
GET /auth/available-roles Список ролей, доступных для выбора при регистрации (Tourist, Hotelier, etc.). Public / Authenticated
POST /auth/self/set-active-role Переключение активной роли пользователя. Может обновлять токен доступа. Authenticated

Модели данных

UserRolesResponse

{
  "user_id": "uuid",
  "roles": [
    { "role_id": 1, "role_name": "admin", "role_description": "..." }
  ],
  "role_flags": {
    "is_admin": true,
    "is_hotelier": false,
    "is_tourist": false
  },
  "role_names": ["admin"],
  "active_role": "admin"
}

SetActiveRoleRequest

{
  "role_name": "hotelier"
}


2. Система Заявок на Роли (Role Requests)

Функционал для запроса новых прав пользователями и их обработки администраторами.

Пользовательская часть

Метод Путь Описание Доступ
GET /role-requests/available-roles Список ролей, которые пользователь может запросить (с флагами hasRole, hasPendingRequest). Authenticated
GET /role-requests/my Список заявок текущего пользователя. Authenticated
POST /role-requests Создание новой заявки на роль. Authenticated

Административная часть

Метод Путь Описание Доступ
GET /admin/role-requests Получение всех заявок с фильтрацией по статусу и роли. Admin
POST /admin/role-requests/{id}/approve Одобрение заявки. Опционально делает роль активной. Admin
POST /admin/role-requests/{id}/reject Отклонение заявки с комментарием. Admin

Модели данных

RoleRequestOut

{
  "id": "uuid",
  "user_id": "uuid",
  "role_id": 1,
  "status": "pending|approved|rejected",
  "reason": "text",
  "created_at": "timestamp",
  "user": { "full_name": "...", "email": "..." },
  "role": { "name": "..." }
}

ApproveRequest

{
  "make_active": boolean,
  "admin_comment": "string"
}


3. Администрирование Пользователей (User Roles Management)

Прямое управление ролями пользователей администратором.

Метод Путь Описание Доступ
GET /users Поиск пользователей. Поддерживает фильтр ?role_id=.... Admin
GET /users/{user_id}/roles Получение списка ролей конкретного пользователя. Admin
PUT /users/{user_id}/roles Полная замена ролей пользователя (назначение/снятие). Валидирует конфликты Primary ролей. Admin

Логика валидации ролей

При назначении ролей через API должны соблюдаться правила: - Primary Roles (можно иметь только одну активную из списка): admin, hotelier, tourist, touroperator. - Secondary Roles (можно комбинировать): instructor, moderator, transfer_provider, restaurateur.


4. Справочники

Метод Путь Описание Доступ
GET /roles Получение полного списка всех системных ролей. Authenticated

План реализации (Roadmap)

  1. Фаза 1: Auth & Self - Реализация эндпоинтов /auth/* для поддержки фронтенда и Edge-функций.
  2. Фаза 2: Role Requests - Реализация полного цикла заявок (пользователь -> админ -> обработка).
  3. Фаза 3: User Management - Реализация прямого управления ролями через админку.