mcpField
F
firebase-auth-internal-app

firebase-auth-internal-app

github.com/tanabee開発337 回インストール3 日前に更新
リポジトリ

firebase-auth-internal-app について

firebase-auth-internal-appは、社内アプリにFirebase Authenticationを組み込むための実装ガイドです。ドメイン制限、Custom Claimsへの権限同期、Firestoreセキュリティルールを扱い、環境固有の設定を実装前に確認します。

主な機能

  1. 01Firebase Authenticationのサインイン設定
  2. 02ブロッキング関数によるメールドメイン制限
  3. 03ユーザー権限のCustom Claimsへの同期
  4. 04Firestoreセキュリティルールの設定
  5. 05ドメイン、フィールド、ロール設定の確認

活用シーン

  1. 01指定したメールドメインからの登録に限定
  2. 02ユーザードキュメントの変更に応じたトークン権限の更新
  3. 03usersコレクションへのロールベースアクセス規則の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tanabee/skills --skill firebase-auth-internal-app

インストール後、Claude Code で/firebase-auth-internal-appを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
blocking_functions.md
custom_claims.md
security_rules.md

詳細

Firebase Authentication を内部アプリケーションに統合します。以下のコンポーネントを実装してください。

前提条件

  • Firebase プロジェクトが作成されている
  • Firebase CLI がインストールされ、ログイン済みである
  • Firestore が有効になっている
  • firebase-auth-basics スキルが利用可能である

実装

1. 認証のセットアップ

firebase-auth-basics スキルに従って、次の作業を行います。

  1. AskUserQuestion を使用して、ユーザーに使用する認証方法を尋ねます
  2. 選択された認証方法を設定します(firebase.json の設定、または Firebase Console からの手動セットアップ)
  3. クライアント側の認証を実装します(初期化、サインイン、認証状態の監視、サインアウト)

すべての認証方法の選択肢、設定手順、クライアント SDK の実装例については、firebase-auth-basics を参照してください。

Web 以外のプラットフォーム(iOS/Android/Flutter/Unity など)では、公式ドキュメント https://firebase.google.com/docs/auth から該当するプラットフォームの情報を取得してください。

2. Blocking Functions によるドメイン制限

references/blocking_functions.md に基づいて実装します。

beforeUserCreated を使用して、次の処理を実装します。

  • ユーザーのメールアドレスからドメインを判定します
  • ドメインが許可されている場合、ユーザー情報を Firestore の users コレクションに登録します
  • ドメインが許可されていない場合、エラーを返してサインインを拒否します
  • 戻り値(return { customClaims: ... })を使用して Custom Claims に初期 role を設定し、初回サインイン時から ID トークンに含まれるようにします

AskUserQuestion を使用して、許可するメールドメイン(例:example.com)をユーザーに尋ねます。複数のドメインがある場合は、カンマ区切りで入力するよう尋ねてください。

また、次の内容を確認してください。

  • users コレクションに保存するフィールド(デフォルト:email、role、createdAt)
3. Custom Claims による権限管理

references/custom_claims.md に基づいて実装します。

onDocumentWritten を使用して users/{id} ドキュメントの変更を監視し、権限情報を Custom Claims と同期します。

  • 初期 Claims は beforeUserCreated の戻り値(セクション 2)で設定されます。このトリガーでは以降の更新のみを処理します
  • users ドキュメントの権限フィールドが更新されたら、setCustomUserClaims を使用して ID トークンに反映します
  • クライアント側では、トークン内の Custom Claims を権限制御に使用できます

デフォルトの role 値:

  • admin:管理者
  • user:一般ユーザー
  • pending:承認待ち
  • deleted:削除済み

ドメイン制限を通過したユーザーの初期 role は user です。次の内容をユーザーに確認してください。

  • Custom Claims に保存する権限フィールド名(デフォルト:role)
  • role の種類をカスタマイズするかどうか(デフォルト:admin、user、pending、deleted)
4. Firestore セキュリティルール

references/security_rules.md に基づいて実装します。

role Custom Claim に基づいてヘルパー関数 isUser() と isAdmin() を定義し、最低限 users コレクションのセキュリティルールを設定します。

アプリケーション内の他のコレクションでも、アクセス制御に isUser() と isAdmin() を使用してください。

注意事項

  • 前提条件が満たされていない場合は、作業を進める前に不足している項目をユーザーに伝えてください
  • 許可するドメインやアプリ名など、環境固有の値を設定する前に必ずユーザーに確認してください
  • Blocking Functions は Cloud Functions for Firebase(第 2 世代)を使用します
  • users コレクションへの書き込みには firebase-admin SDK(サーバー側)を使用します

コメント