22 lines
1.4 KiB
Markdown
22 lines
1.4 KiB
Markdown
# Роль по умолчанию — «Просмотр» (изменение 016)
|
||||
|
|
|
|||
|
|
Находка ревью № 6, серьёзность — средняя.
|
|||
|
|
|
|||
|
|
## Context
|
|||
|
|
`POST /users` без поля `role` создаёт администратора (`UserIn.role = Role.admin`, воспроизведено); модель `User.role` тоже `default=Role.admin`.
|
|||
|
|
UI передаёт роль явно, но клиенты API и скрипты по умолчанию получают максимальные права. Принцип наименьших привилегий требует `viewer`.
|
|||
|
|
|
|||
|
|
## Решение
|
|||
|
|
1. `app/schemas.py`: `UserIn.role: Role = Role.viewer`.
|
|||
|
|
2. `app/models.py`: `User.role` — `default=Role.viewer`. Первичный администратор из `.env` создаётся в `seed()` с явным `role=Role.admin` (уже так) — не затрагивается.
|
|||
|
|
Серверного значения по умолчанию в БД нет → миграция не нужна.
|
|||
|
|
3. `README.md` (раздел «Пользователи и роли»): роль по умолчанию — `viewer`.
|
|||
|
|
|
|||
|
|
## Файлы
|
|||
|
|
`app/schemas.py`, `app/models.py`, `tests/test_users.py`, `README.md`.
|
|||
|
|
|
|||
|
|
## Тест
|
|||
|
|
В `test_users_management`: создание без `role` → `role == "viewer"`.
|
|||
|
|
|
|||
|
|
## Проверка
|
|||
|
|
`pytest -q`; UI «Новый пользователь» по-прежнему предлагает «Просмотр».
|