mcpField
F
firebase-auth-internal-app

firebase-auth-internal-app

github.com/tanabee开发337 次安装2 天前更新
代码仓库

关于 firebase-auth-internal-app

firebase-auth-internal-app 是用于在内部应用中集成 Firebase Authentication 的实施指南,面向开发者。它涵盖域名限制、Custom Claims 权限同步及 Firestore 安全规则,并要求确认环境配置。

主要功能

  1. 01配置 Firebase Authentication 登录
  2. 02通过阻止函数限制邮箱域名
  3. 03将用户权限同步到 Custom Claims
  4. 04为 Firestore 配置安全规则
  5. 05确认域名、字段和角色设置

适用场景

  1. 01限制仅允许指定邮箱域名注册
  2. 02根据用户文档更新令牌权限
  3. 03为用户集合设置角色访问规则

安装

复制下面的命令,在终端中运行。

$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. 通过阻止函数限制域名

根据 references/blocking_functions.md 实现。

使用 beforeUserCreated 执行以下操作:

  • 从用户的电子邮件地址中确定域名
  • 如果域名在允许列表中,则将用户信息注册到 Firestore 的 users 集合中
  • 如果域名不在允许列表中,则返回错误以拒绝登录
  • 通过返回值设置 Custom Claims 中的初始 role(return { customClaims: ... }),使其从首次登录开始就包含在 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() 进行访问控制。

备注

  • 如果未满足任何前置条件,请在继续前告知用户缺少哪些条件
  • 设置前,务必与用户确认允许的域名、应用名称等环境相关值
  • 阻止函数使用 Cloud Functions for Firebase(第 2 代)
  • 写入 users 集合时使用 firebase-admin SDK(服务端)

评论

支持 Markdown