01-admins

Адмін панелі

src/admins/ — облікові записи на партнерських сайтах, від імені яких платформа бачить TU, вивантажує статистику і змінює паролі TU.

Дані: project_admins · Swagger: тег Admins у /v2/docs · План: AdminService

Що робить модуль

  • Зберігає адмін панелі проєкту; пароль — у зашифрованому вигляді.
  • Перевіряє credentials на партнері при створенні та при зміні пароля.
  • Є джерелом статусу, логіна і партнерських ID адмін панелі для інших модулів.

Запити до партнера (перевірка credentials, список TU, зміна пароля TU) виконує сервіс проєкту project-golden; платформа нормалізує відповідь адаптером проєкту.

Логіка

  1. Створення. Логін обрізається від пробілів; друга адмін панель з тим самим логіном у проєкті відхиляється, навіть якщо її додав інший директор. Далі credentials перевіряються на партнері, партнерські ID з відповіді нормалізує адаптер, пароль шифрується, час перевірки фіксується. Нова адмін панель завжди активна.
  2. Зміна. Можна змінити пароль, налаштування або статус. Новий пароль знову перевіряється на партнері, і тільки після цього перезаписуються партнерські ID і час перевірки. Зміна без жодного поля відхиляється.
  3. Статус. Заблокована адмін панель лишається в списку, але виключається з усіх запитів до партнера: refresh TU, вигрузка статистики, зміна пароля TU.
  4. Список. Директор бачить адмін панелі свого scope, найновіші першими. До кожної додаються лічильники: тімліди, у профілі яких у Stack стоїть логін цієї адмін панелі, і всі їхні оператори без повторів. Лічильник TU поки завжди 0.
  5. Логіни за ID. Повертає логіни за списком canonical ID адмін панелей з TU. Доступно всім ролям, яким TU віддається з адмін панеллю, а не лише ролям зі списком адмін панелей.

Залежні модулі

МодульВикористання
Refresh TUscope — директори з активними адмін панелями; списки TU завантажує сервіс проєкту по кожній активній адмін панелі
Призначення тімлідатімлід і TU мають належати одній адмін панелі
Доступ client managerclient 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 IDdirector, 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 не виконується на партнері: пароль зберігається лише на платформі.