Перейти до вмісту

� Модуль Авторизації та Відновлення Паролю — 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

🔑 Токени та Безпека

  1. 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 }.
  2. Refresh Token:

    • Час життя: 7 днів (7d).
    • Зберігається у десктопному додатку через нативний зв’язок ключів ОС (OS Keychain) та використовується для тихого фонового поновлення сесії без переривання роботи користувача.
  3. Скидання Паролю (Password Recovery Flow):

    • При виклику POST /api/auth/forgot-password генерується криптографічно стійкий випадковий токен (crypto.randomBytes(32).toString('hex')) з часом життя 1 година.
    • Токен записується в поля resetToken та resetTokenExpiry користувача.
    • При виклику POST /api/auth/reset-password бекенд перевіряє актуальність токену, хешує новий пароль бібліотекою bcrypt (10 раундів солі) та скидає поля токену в null.