Skip to content

Аутентифікація і маршрутизація

Ця сторінка пояснює захист маршрутів і поведінку ролей на frontend і backend.

Групи маршрутів frontend

Публічні маршрути:

  • /login
  • /accept-invite

Маршрути співробітника:

  • /
  • /courses
  • /courses/:id
  • /results

Адмінські маршрути:

  • /admin
  • /admin/team
  • /admin/users
  • /admin/content
  • /admin/courses/:id
  • /admin/assignments

Захист на frontend

App.jsx використовує обгортки захисту:

  • Protected
  • EmployeeOnly
  • AdminOnly

Поведінка:

  • відсутність токена перенаправляє на /login
  • адміни перенаправляються із маршрутів співробітника
  • неадміни перенаправляються з адмінських маршрутів

Модель аутентифікації backend

Backend API використовує токенну аутентифікацію Laravel Sanctum.

У routes/api.php:

  • /api/login є публічним
  • ендпоінти для токенів запрошень у потоці прийняття є публічними
  • усі інші API-маршрути знаходяться всередині auth:sanctum

Модель авторизації

Авторизація враховує роль на рівні контролерів.

Типові обмеження:

  • співробітники не можуть керувати користувачами, контентом або статистикою
  • адміністратори мають доступ до керування та аналітики
  • співробітники не можуть бачити чернетки курсів (draft)

Потік onboarding через запрошення

  1. Адмін створює запрошення.
  2. Отримувач відкриває /accept-invite?token=....
  3. Frontend перевіряє токен через API.
  4. Отримувач задає ім'я і пароль.
  5. Backend створює користувача і повертає auth payload.
  6. Користувач автоматично входить у систему і перенаправляється відповідно до ролі.

Практичні перевірки

Під час зміни маршрутів або ролей:

  • перевіряйте поведінку frontend guards
  • перевіряйте захист backend-ендпоінтів
  • тестуйте перенаправлення для обох ролей
  • тестуйте потік invite з валідними та простроченими токенами