認証プロバイダ
- GitHub: OAuth 連携
- Discord: OAuth 連携
- メール: メールアドレス+パスワード
アクセス制御
ログイン不要で閲覧可能
- ランディングページ (
/) - コース一覧 (
/courses) - コース詳細 (
/courses/:courseId) - 公開プロフィール (
/profile/:userId)
ログイン必須
- 授業ページ (
/courses/:courseId/lessons/:lessonId) - ダッシュボード (
/dashboard) - マイページ (
/mypage) - ランキング (
/ranking)
未ログイン時の挙動
授業ページに未ログインでアクセスした場合:- トップ (
/) へリダイレクト - クエリパラメータ
loginRequired=1付きで遷移 - トップページで「ログインしてください」トーストを表示
- トーストのアクションボタンでログインモーダルを開ける
実装
- ルートの
beforeLoadでセッション取得 - 授業ページの
beforeLoadでセッション未存在時にredirect({ to: '/', search: { loginRequired: '1' } }) - ダッシュボードなどは
authMiddlewareをサーバーに適用(参考実装)
src
contexts
routes/api
middlewares
utils
infrastructure/db/schema