Управление командой¶
Раздел описывает работу с пользователями трекера TrafMate: учётные записи, роли, разграничение доступа (ACL), API-ключи и восстановление пароля.
Пользователи¶
Управление пользователями доступно в разделе «Пользователи». Раздел виден только администраторам.
Каждая учётная запись содержит поля:
| Поле | Описание |
|---|---|
| Логин | Уникальное имя для входа |
| Роль | admin или user |
| Статус | active (активна) или paused (приостановлена) |
| Пароль | Задаётся при создании; хранится в виде bcrypt-хеша |
Пароль никогда не хранится и не отображается в открытом виде - в базе данных сохраняется только его bcrypt-хеш.
Защищённые учётные записи¶
Отдельные учётные записи помечаются флагом protected. Такую запись нельзя:
- удалить;
- деактивировать (перевести в статус
paused); - лишить роли
admin.
Ограничение действует не только в интерфейсе, но и на уровне базы данных - через триггеры. Это означает, что защищённую запись невозможно испортить даже прямым SQL-запросом в обход UI. Механизм защищает основной root-аккаунт от случайной или ошибочной блокировки.
Роли¶
В трекере две роли:
- admin - полный доступ ко всем разделам, сущностям и настройкам без ограничений.
- user (баер) - ограниченный доступ, определяемый настройками ACL. Видит только те разделы и только те сущности, которые ему разрешены.
Разграничение доступа (ACL)¶
Доступ баера ограничивается двумя независимыми слоями.
Слой 1. Доступ к разделам¶
Определяется набором ресурсов пользователя (user_resources) - какие пункты меню и какие API-эндпоинты доступны учётной записи. Управляемые разделы:
campaigns- кампании;offers- офферы;landings- лендинги;streams- потоки;domains- домены;reports- отчёты;conversions- конверсии;clicks- клики;- и другие.
Если раздел не выдан пользователю, соответствующий пункт меню и его API недоступны.
Слой 2. Изоляция по группам¶
Определяется набором групп пользователя (user_groups). Баер видит только сущности, относящиеся к его группам. Сущности чужих групп для него не существуют.
Поведение при нарушении¶
Если не-администратор обращается к чужой группе или к административному эндпоинту, запрос отклоняется с кодом 403 (Forbidden).
Два слоя работают совместно: чтобы баер увидел сущность, ему должен быть выдан и соответствующий раздел, и группа, к которой относится эта сущность.
Управление доступом пользователя¶
Настройка доступа выполняется в карточке пользователя. Администратор задаёт:
- Разделы (ресурсы) - к каким пунктам меню и API имеет доступ пользователь;
- Группы - какие группы сущностей видит пользователь.
Изменения вступают в силу для всех обращений пользователя, включая доступ по его API-ключам (см. ниже).
API-ключи (Admin API)¶
API-ключи создаются в разделе «Настройки» -> карточка «API-ключи». Раздел доступен только администраторам.
Назначение¶
Ключ даёт доступ к REST API трекера. Формат ключа: префикс tm_ и hex-строка (например, tm_a1b2c3...).
Ключ передаётся в запросе одним из способов:
- заголовок
Api-Key: <ключ>; - заголовок
Authorization: Bearer <ключ>.
Наследование прав (ACL)¶
API-ключ наследует права своего пользователя. Ключ не даёт больше доступа, чем есть у владельца:
- ключ администратора имеет полный доступ;
- ключ баера видит только разделы и группы этого баера - те же ограничения ACL, что и в интерфейсе.
Показ и хранение¶
Ключ показывается полностью только один раз - в момент создания. Скопируйте и сохраните его сразу. При последующих просмотрах ключ отображается в маскированном виде и восстановить его целиком нельзя.
Отзыв¶
Чтобы отозвать доступ, удалите ключ. После удаления запросы с этим ключом перестают работать немедленно.
Восстановление пароля¶
Самостоятельного сброса пароля пользователем нет. Новый пароль задаёт администратор в карточке пользователя.
Порядок действий:
- Откройте раздел «Пользователи».
- Откройте карточку нужного пользователя.
- Задайте новый пароль и сохраните.
Новый пароль сохраняется в виде bcrypt-хеша и вступает в силу сразу.