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

Управление пользователями

Руководство по созданию, редактированию и управлению пользователями AegisAI.

Список пользователей

curl http://localhost:8000/api/v1/users \
  -H "Authorization: Bearer <admin-jwt>"

Параметры фильтрации:

Параметр Описание
role Фильтр по роли
is_active true / false
limit Количество записей
offset Смещение

Изоляция арендаторов

Admin видит только пользователей своего tenant. Super Admin видит всех.

Создание пользователя

curl -X POST http://localhost:8000/api/v1/users \
  -H "Authorization: Bearer <admin-jwt>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "analyst@company.com",
    "password": "TempPass123!",
    "full_name": "Анна Аналитикова",
    "role": "security_analyst",
    "tenant_id": "<tenant-uuid>"
  }'
Поле Обязательно Описание
email Уникальный email
password Минимум 8 символов
full_name Отображаемое имя
role RBAC-роль
tenant_id ✅* UUID арендатора (*не нужен для super_admin)

Пользователи SSO

При включённом SSO пользователи могут создаваться автоматически при первом входе через IdP (JIT). У таких пользователей:

  • Заполнены auth_provider и external_subject
  • Нет локального пароля — сброс пароля не применяется
  • Роль назначается из групп IdP (SSO_ROLE_MAPPING_JSON)

Отключите автосоздание: SSO_AUTO_PROVISION=false. См. SSO.

Редактирование пользователя

curl -X PUT http://localhost:8000/api/v1/users/<user_id> \
  -H "Authorization: Bearer <admin-jwt>" \
  -H "Content-Type: application/json" \
  -d '{
    "full_name": "Анна Аналитикова",
    "is_active": true
  }'

Смена роли

curl -X PUT http://localhost:8000/api/v1/users/<user_id>/role \
  -H "Authorization: Bearer <admin-jwt>" \
  -H "Content-Type: application/json" \
  -d '{"role": "developer"}'

Ограничения

  • Нельзя назначить super_admin, если вы не super_admin
  • Нельзя назначить роль выше своей
  • Нельзя изменить роль super_admin

Блокировка и разблокировка

curl -X POST http://localhost:8000/api/v1/users/<user_id>/block \
  -H "Authorization: Bearer <admin-jwt>"
curl -X POST http://localhost:8000/api/v1/users/<user_id>/unblock \
  -H "Authorization: Bearer <admin-jwt>"

Заблокированный пользователь (is_active=false):

  • Не может войти в систему
  • Существующие JWT-сессии отклоняются
  • WebSocket-соединения закрываются

Сброс пароля

Администратор может сбросить пароль пользователя:

curl -X POST http://localhost:8000/api/v1/users/<user_id>/reset-password \
  -H "Authorization: Bearer <admin-jwt>" \
  -H "Content-Type: application/json" \
  -d '{"new_password": "NewSecurePass456!"}'

Удаление пользователя

curl -X DELETE http://localhost:8000/api/v1/users/<user_id> \
  -H "Authorization: Bearer <admin-jwt>"

Ограничения удаления

  • Super Admin не может быть удалён
  • Нельзя удалить самого себя
  • API-ключи пользователя отзываются автоматически

API-ключи пользователя

Каждый пользователь может иметь несколько API-ключей:

curl http://localhost:8000/api/v1/api-keys \
  -H "Authorization: Bearer <user-jwt>"

Ключи хранятся в виде bcrypt-хеша. Полный ключ показывается только при создании.

Аудит действий

Все операции с пользователями записываются в user_audit_log:

Действие Описание
user.created Создание пользователя
user.updated Изменение профиля
user.role_changed Смена роли
user.blocked Блокировка
user.unblocked Разблокировка
user.password_reset Сброс пароля
user.deleted Удаление
login Успешный вход
logout Выход