Автентифікація
Метадані
Section titled “Метадані”| Поле | Значення |
|---|---|
| Статус | 🟢 prod |
| Поверхні | web (прив’язка акаунта — спільна поверхня з ботом) |
| Доступність | безкоштовно |
| Власник | TODO: |
| Останнє підтвердження | 2026-06-13 · curl (live) + код:main |
Призначення
Section titled “Призначення”Дає абітурієнту акаунт: вхід через Google, JWT-сесія, після логіну відкриваються кабінет/профіль, обрані спеціальності та збережені оффери (картки — див. індекс).
User flow
Section titled “User flow”Точка входу: https://abitly.org/uk/auth/login (кнопки «Увійти» / «Зареєструватися» в хедері; обидві сторінки live 200).
- Єдиний метод входу — кнопка Google (форм email/пароль на live-сторінці немає).
- OAuth-редирект → consent → повернення на
/auth/callback. - Callback читає
isRegistrationComplete:true→ збережений returnUrl або головна;false→/auth/register/complete-profile(дозаповнення анкети) →/auth/register/completed. - Сесія: JWT access + refresh у cookies, тихе оновлення через
POST /auth/refresh.
Гейтинг: неавторизований запит /uk/profile → 307 на /uk/auth/login (перевірено curl 2026-06-13).
Прив’язка Telegram: deep-link з бота веде на /auth/telegram-connect?telegramId=…; сторінка вимагає активної web-сесії і викликає POST /telegram-user/connect-to-web-user/:telegramId.
Sequence-діаграма OAuth → data-flows. Деталі JWT (TTL, секрети), Telegram initData → інтеграція Auth.
Дані та API
Section titled “Дані та API”| Джерело | Ендпоінт / entity | Призначення |
|---|---|---|
| api-v2 | GET /auth/google, GET /auth/google/redirect | старт OAuth + callback (мінтить JWT-cookies) |
| api-v2 | POST /auth/refresh, POST /auth/logout, POST /auth/complete-registration | життєвий цикл сесії та реєстрації |
| api-v2 | POST /telegram-user/connect-to-web-user/:telegramId, POST /auth/telegram/* | прив’язка та реєстрація з боку бота |
Strapi не задіяний.
Зв’язки з іншими фічами
Section titled “Зв’язки з іншими фічами”- Особистий кабінет / профіль, обрані спеціальності, збережені оффери — гейтяться цією фічею (див. індекс).
- Deep-links до Telegram-бота — вхідна точка сценарію прив’язки.
| Репо | Шлях | Примітка |
|---|---|---|
abitly-frontend-v2 | src/app/[locale]/auth/** | login / register / callback / telegram-connect |
abitly-frontend-v2 | src/api/auth/, src/api/core/fetchWithAuth.ts | клієнт auth, cookie-сесія, refresh |
abitly-api-v2 | src/api/auth/ (+ guards/), src/api/telegram-user/ | контролер, JwtGuard/GoogleAuthGuard/OptionalJwtAuthGuard |
Обмеження та блокери
Section titled “Обмеження та блокери”- Єдиний метод входу на web — Google OAuth; email/пароль немає.
- Прив’язка Telegram: сторінка live, але
TODO:наскрізний сценарій бот → web end-to-end не підтверджений (див. data-flows і картку бота). - Помилка OAuth → редирект на returnUrl (дефолт
/materials) з?authError=1.
Історія змін
Section titled “Історія змін”| Дата | Подія | Джерело |
|---|---|---|
| 2026-06-13 | Картку створено за discovery (live curl + код main обох репо) | skill document-feature |