跳转到主要内容

概述

Apollo 采用三层权限模型,从组织级别到单个项目 Board 提供精细的访问控制。

权限层级

第一层:组织

organization_members 中管理。控制组织范围的访问权限。
角色权限
Owner完全控制 — 计费、设置、成员管理、所有功能
Admin管理成员、团队和大部分设置。不能删除组织或管理计费
Member根据团队和 Board 角色访问功能。不能管理组织设置
External Collaborator仅限访问特定分配的项目

第二层:团队

team_members 中管理。控制团队范围内的资源。
角色权限
Lead管理团队设置、成员、功能配置和项目分配
Member访问团队项目、任务、发布版本和知识库

第三层:Board(项目)

user_project_access.board_role 中管理。控制每个项目的访问权限。
角色权限
Owner完全的项目控制 — 设置、成员、删除
Editor创建和修改任务、发布版本和知识库页面
Viewer对项目资源的只读访问

用户类型

从组织角色派生:
用户类型派生自可见内容
Internal组织中的 Owner、Admin 或 Member 角色基于功能访问权限的完整平台
CustomerCustomer 用户类型简化的仪表板、已分配的项目
External Collaborator组织中的 External Collaborator 角色仅特定分配的项目

路由保护

Apollo 在多个级别强制执行权限:
  • <ProtectedRoute> — 需要身份验证(任何已登录用户)
  • <FeatureRoute feature="..."> — 需要为用户启用指定功能
  • <InternalRoute> — 需要内部用户类型
  • <AdminRoute> — 需要组织中的 admin 或 owner 角色

Row-Level Security (RLS)

所有数据库表都在 PostgreSQL 级别强制执行 Row-Level Security 策略。即使前端被绕过,数据库也会基于 auth.uid() 强制执行访问规则。