convex-setup-auth は何をしますか?
Convexアプリに認証、IDマッピング、アクセス制御を設定します。ログイン、認証プロバイダー、ユーザーテーブル、保護された関数、ロールに使用します。
機能
- 複数の認証プロバイダー(Auth0, Clerk, カスタムJWTなど)に対応
- ユーザーIDとConvexユーザーIDのマッピング
- ユーザーテーブルの自動作成(
usersテーブル) - クエリとミューテーションの保護(認証必須)
- 管理者ロールやカスタムロールのサポート
セットアップ
- 認証プロバイダーの設定(例:Auth0, Clerk)
convex/auth.config.tsにプロバイダー設定を追加- スキーマに
usersテーブルを定義 - 各関数に認証チェックを実装
使用例
// 認証が必要なクエリの例
export const getCurrentUser = query({
args: {},
handler: async (ctx) => {
const identity = await ctx.auth.getUserIdentity();
if (!identity) {
throw new Error("認証が必要です");
}
return identity;
},
});
// 保護されたミューテーションの例
export const updateProfile = mutation({
args: { name: v.string() },
handler: async (ctx, args) => {
const identity = await ctx.auth.getUserIdentity();
if (!identity) {
throw new Error("認証が必要です");
}
const userId = identity.subject;
await ctx.db.patch("users", userId, { name: args.name });
},
});
注意事項
- 認証プロバイダーの設定は環境変数(
AUTH0_DOMAIN,CLERK_SECRET_KEYなど)で管理 convex/auth.config.tsはConvexのセットアップ時に自動生成- 詳細はConvex認証ドキュメントを参照