Пользователь
Учётная запись Сервиса: через неё выполняется вход, и от её членства в группах зависят полномочия. Роли видения — хранитель и администратор — выражаются набором групп, а не отдельным полем.
1. Назначение
Пользователь — субъект доступа. Он входит по логину и паролю, получает токен сессии и на каждый защищённый вызов предъявляет свои полномочия. Сами полномочия у пользователя не хранятся напрямую — они выводятся из групп, в которые он входит (группа → функции → claim-значения).
Роли из видения (хранитель, администратор) — это не отдельное поле, а удобные наборы групп/функций: «хранитель» = функции ввода и проверки, «администратор» = функции конфигурации и управления доступом.
2. Инварианты
- Логин уникален.
- Полномочия задаются только через членство в группах; прямых прав у пользователя нет.
- Пароль на этапе разработки — открытым текстом (сид); до продакшна — хеш + соль.
- Поля истории (
CreatedByUserId/AssignedToUserIdпакета) ссылаются на пользователя по идентификатору и заполняются из контекста вошедшего.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
Id | Guid | Идентификатор пользователя. |
Name | String | ФИО пользователя (для отображения). |
Login | String | Логин (уникален). |
Password | String | Пароль. На этапе разработки хранится открытым текстом (сид-данные); до продакшна заменяется на хеш + соль (см. ADR-SRV-006, «отложено»). |
Groups | IReadOnlyList<UserGroup> | Членство в группах полномочий — через него пользователь получает права. |
ActiveTokens | IReadOnlyList<UserActiveToken> | Активные (выписанные и не отозванные) токены пользователя. |
InvalidatedTokens | IReadOnlyList<UserInvalidatedToken> | Отозванные токены пользователя (чёрный список). |
Структурные связи
Используется
- Handler Handler: GetUserProfile
- Handler Handler: LoginByPassword