� Модуль Авторизації та Відновлення Паролю — SmartFeed Studio
📌 Ендпоінти Авторизації (/api/auth)
| Метод | Ендпоінт | Опис | Доступ |
|---|---|---|---|
POST | /api/auth/register | Реєстрація нового акаунту (видача Access + Refresh токенів) | Публічний |
POST | /api/auth/login | Вхід за email та паролем (Access + Refresh токени) | Публічний |
POST | /api/auth/refresh | Оновлення Access токену за допомогою Refresh токену | Публічний |
POST | /api/auth/forgot-password | Запит на відновлення паролю (генерація токену скидання) | Публічний |
POST | /api/auth/reset-password | Встановлення нового паролю за валідним токеном | Публічний |
GET | /api/auth/me | Отримання профілю поточного авторизованого користувача | Bearer JWT |
POST | /api/auth/change-password | Зміна власного паролю авторизованим користувачем | Bearer JWT |
🔑 Токени та Безпека
-
Access Token:
- Час життя для Адміністраторів (
ADMIN,SUPER_ADMIN): 1 година (3600 секунд/JWT_ADMIN_ACCESS_EXPIRATION="1h"). - Час життя для Звичайних користувачів (
USER): 15 хвилин (900 секунд/JWT_ACCESS_EXPIRATION="15m"). - Підписаний алгоритмом HS256 (
JWT_ACCESS_SECRET). - Містить payload:
{ sub: userId, email: user.email, role: user.role }.
- Час життя для Адміністраторів (
-
Refresh Token:
- Час життя: 7 днів (
7d). - Зберігається у десктопному додатку через нативний зв’язок ключів ОС (OS Keychain) та використовується для тихого фонового поновлення сесії без переривання роботи користувача.
- Час життя: 7 днів (
-
Скидання Паролю (Password Recovery Flow):
- При виклику
POST /api/auth/forgot-passwordгенерується криптографічно стійкий випадковий токен (crypto.randomBytes(32).toString('hex')) з часом життя 1 година. - Токен записується в поля
resetTokenтаresetTokenExpiryкористувача. - При виклику
POST /api/auth/reset-passwordбекенд перевіряє актуальність токену, хешує новий пароль бібліотекоюbcrypt(10 раундів солі) та скидає поля токену вnull.
- При виклику