Адмін панелі
src/admins/ — облікові записи на партнерських сайтах, від імені яких платформа бачить TU, вивантажує статистику і змінює паролі TU.
Дані: project_admins · Swagger: тег Admins у /v2/docs · План: AdminService
Що робить модуль
- Зберігає адмін панелі проєкту; пароль — у зашифрованому вигляді.
- Перевіряє credentials на партнері при створенні та при зміні пароля.
- Є джерелом статусу, логіна і партнерських ID адмін панелі для інших модулів.
Запити до партнера (перевірка credentials, список TU, зміна пароля TU) виконує сервіс проєкту project-golden; платформа нормалізує відповідь адаптером проєкту.
Логіка
- Створення. Логін обрізається від пробілів; друга адмін панель з тим самим логіном у проєкті відхиляється, навіть якщо її додав інший директор. Далі credentials перевіряються на партнері, партнерські ID з відповіді нормалізує адаптер, пароль шифрується, час перевірки фіксується. Нова адмін панель завжди активна.
- Зміна. Можна змінити пароль, налаштування або статус. Новий пароль знову перевіряється на партнері, і тільки після цього перезаписуються партнерські ID і час перевірки. Зміна без жодного поля відхиляється.
- Статус. Заблокована адмін панель лишається в списку, але виключається з усіх запитів до партнера: refresh TU, вигрузка статистики, зміна пароля TU.
- Список. Директор бачить адмін панелі свого scope, найновіші першими. До кожної додаються лічильники: тімліди, у профілі яких у Stack стоїть логін цієї адмін панелі, і всі їхні оператори без повторів. Лічильник TU поки завжди
0. - Логіни за ID. Повертає логіни за списком canonical ID адмін панелей з TU. Доступно всім ролям, яким TU віддається з адмін панеллю, а не лише ролям зі списком адмін панелей.
Залежні модулі
| Модуль | Використання |
|---|---|
| Refresh TU | scope — директори з активними адмін панелями; списки TU завантажує сервіс проєкту по кожній активній адмін панелі |
| Призначення тімліда | тімлід і TU мають належати одній адмін панелі |
| Доступ client manager | client manager бачить свої TU і TU без client manager на своїх адмін панелях; посилання на адмін панелі з профілю Stack резолвляться в canonical ID |
| Паролі TU | пароль TU змінюється через активну адмін панель TU |
project-golden | вигрузка статистики і списки TU — лише по активних адмін панелях; логін на партнері розшифрованим паролем |
| Міграції | адмін панелі мігрують першими; TU і статистика резолвлять адмін панель за партнерським ID |
API для frontend
| Роут | Що робить | Ролі |
|---|---|---|
POST /v2/admins/findByProject | список адмін панелей проєкту з лічильниками | director, HR |
POST /v2/admins/resolveReferences | логіни за canonical ID | director, HR, top manager, тімлід, client manager |
POST /v2/admins/create | нова адмін панель після перевірки на партнері | director |
POST /v2/admins/update | пароль, налаштування або статус | director |
Нюанси
- Пароль не входить у звичайні вибірки: репозиторій віддає його лише методами для credentials; у відповідях API пароля немає.
- Ключ шифрування
PROJECT_ADMIN_CREDENTIALS_SECRETспільний для платформи іproject-golden(розшифровує пароль для логіну на партнері) і для паролів TU. Втрата ключа — повторне введення всіх паролів. - Адаптер реалізований лише для Golden; для інших проєктів створення і перевірка повертають помилку «адаптер не реалізований».
- Лічильники тімлідів і операторів — лише для Golden: тімліди визначаються за логіном адмін панелі в профілі Stack.
- Поза production зміна пароля TU не виконується на партнері: пароль зберігається лише на платформі.