Skip to main content

認証プロバイダ

  • GitHub: OAuth 連携
  • Discord: OAuth 連携
  • メール: メールアドレス+パスワード
Better Auth を使用しており、ヘッダーからログインモーダルを開いて各方式でサインインできます。

アクセス制御

ログイン不要で閲覧可能

  • ランディングページ (/)
  • コース一覧 (/courses)
  • コース詳細 (/courses/:courseId)
  • 公開プロフィール (/profile/:userId)

ログイン必須

  • 授業ページ (/courses/:courseId/lessons/:lessonId)
  • ダッシュボード (/dashboard)
  • マイページ (/mypage)
  • ランキング (/ranking)

未ログイン時の挙動

授業ページに未ログインでアクセスした場合:
  1. トップ (/) へリダイレクト
  2. クエリパラメータ loginRequired=1 付きで遷移
  3. トップページで「ログインしてください」トーストを表示
  4. トーストのアクションボタンでログインモーダルを開ける

実装

  • ルートの beforeLoad でセッション取得
  • 授業ページの beforeLoad でセッション未存在時に redirect({ to: '/', search: { loginRequired: '1' } })
  • ダッシュボードなどは authMiddleware をサーバーに適用(参考実装)
認証まわりの主なファイル:
src