Метод POST /api/v1/user

Краткое описание

  • Создаёт нового пользователя или обновляет существующего.

  • Требуется авторизация и роль администратора (Depends check_is_admin).

Алгоритм работы метода

  • Если пользователя с переданным login нет — создаётся новая запись. Для создания пароль обязателен.

  • Если пользователь уже существует — выполняется обновление полей; если password не передан, сохраняется прежний пароль.

  • Пароль сохраняется в базе в зашифрованном виде (фернет).

  • Для пользователя с login == "admin" действуют дополнительные ограничения:

    • только текущий администратор с login "admin" может изменять этого пользователя;

    • нельзя снять у него роль администратора (нельзя установить is_admin = false).

  • Перед сохранением устанавливается поле ecc_dt = текущее локальное время.

Входные параметры (тело запроса, JSON)

  • Объект модели User. Основные поля:

    • login (string) — уникальный логин пользователя (обязателен)

    • password (string) — пароль (обязателен при создании, необязателен при обновлении)

    • name (string) — имя (опционально)

    • lastname (string) — фамилия (опционально)

    • is_admin (boolean) — флаг администратора (опционально)

    • (возможны другие поля модели User)

  • Ответ (успех)

    • Возвращает объект UserCRUD (JSON) — сохранённую запись пользователя.

    • Поле password в ответе заменено на '***' (маскировка)

Пример запроса (создание)

{ "login":"jdoe", "password":"secret", "name":"John", "lastname":"Doe", "is_admin":false }

Пример ответа

{ "password": "***", "is_deleted": false, "name": "John", "ecc_dt": "2025-11-13T14:02:54.870183+03:00", "login": "jdoe", "lastname": "Doe", "is_admin": false }
Замечания по использованию
  • При обновлении не передавайте password, если хотите сохранить старый пароль.

  • Не пытайтесь изменять запись admin без соответствующих прав.

  • Убедитесь, что запрос выполняется от имени пользователя с ролью администратора.