EasyStarter logoEasyStarter

認証システム

ユーザー認証と認可

概要

EasyStarter は Better Auth を使用して認証を行い、完全なユーザー管理ソリューションを提供します。

サポートされる認証方法

方法説明
メール/パスワードメール確認付きの従来の登録方式
GitHub OAuthGitHub アカウントでワンクリックログイン
Google OAuthGoogle アカウントでワンクリックログイン

設定

環境変数

# 必須
AUTH_SECRET=your-secret-key

# OAuth(オプション)
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret

# メール(確認用)
RESEND_API_KEY=your-resend-api-key

フロントエンドでの使用

サインイン

import { authClient } from "@/lib/auth-client";

// メール/パスワード
await authClient.signIn.email({
  email: "user@example.com",
  password: "password123",
});

// OAuth
await authClient.signIn.social({ provider: "github" });
await authClient.signIn.social({ provider: "google" });

サインアウト

await authClient.signOut();

現在のユーザーを取得

const { data: session } = authClient.useSession();
const user = session?.user;

セッション管理

Better Auth がセッションを自動管理します:

  • Cookie ベースのセッション保存
  • 期限切れ前の自動更新
  • タブ間同期

ルート保護

認証ミドルウェアを使用してルートを保護:

// ルートコンポーネント内
import { createFileRoute, redirect } from "@tanstack/react-router";

export const Route = createFileRoute("/dashboard")({
  beforeLoad: async ({ context }) => {
    if (!context.user) {
      throw redirect({ to: "/sign-in" });
    }
  },
});

ロールと権限

EasyStarter は @repo/app-config/rbac に静的なグローバルロール行列を持ち、user / admin の 2 ロールを定義します。アカウントはちょうど 1 つのロールを持ちます。ロールは権限であり、Membership Tier(課金エンタイトルメント)ではありません。

Demo サンドボックス

ユーザー管理画面は分離されたサンドボックスです。サインインした実アカウントはすべて管理者となり、それぞれ公開された合成アカウントの独立した一覧を持ちます。ロール変更や凍結はそのアカウント自身のテストデータだけに作用し、実アカウントは一覧に表示されません。実際のプロダクトを開発するテンプレート利用者は、独自のグローバル管理または権限モデルにこの境界を置き換えてください。

閉じられた Better Auth admin HTTP ルート

admin プラグインはロール保存、ban セマンティクス、サーバー側の auth.api.* 呼び出しのために登録されています。/api/auth/admin/* HTTP 面は apps/server/src/index.ts で意図的に拒否されます。管理操作は oRPC(users.list / users.setRole / users.ban / users.unban)経由で行い、このサーバーに対して authClient.admin.* を呼ばないでください。

On this page