Visão Geral
O Apollo utiliza um modelo de permissões em três camadas que oferece controle de acesso granular desde o nível da organização até os boards de projetos individuais.Camadas de Permissão
Camada 1: Organização
Gerenciado emorganization_members. Controla o acesso em toda a organização.
| Cargo | Permissões |
|---|---|
| Owner | Controle total — faturamento, configurações, gestão de membros, todas as funcionalidades |
| Admin | Gerenciar membros, equipes e a maioria das configurações. Não pode excluir a organização ou gerenciar faturamento |
| Member | Acesso a funcionalidades com base nos cargos de equipe e board. Não pode gerenciar configurações da organização |
| External Collaborator | Acesso limitado apenas a projetos especificamente atribuídos |
Camada 2: Equipe
Gerenciado emteam_members. Controla recursos no escopo da equipe.
| Cargo | Permissões |
|---|---|
| Lead | Gerenciar configurações da equipe, membros, configuração de funcionalidades e atribuições de projetos |
| Member | Acesso a projetos, tarefas, releases e base de conhecimento da equipe |
Camada 3: Board (Projeto)
Gerenciado emuser_project_access.board_role. Controla o acesso por projeto.
| Cargo | Permissões |
|---|---|
| Owner | Controle total do projeto — configurações, membros, exclusão |
| Editor | Criar e modificar tarefas, releases e páginas da base de conhecimento |
| Viewer | Acesso somente leitura aos recursos do projeto |
Tipos de Usuário
Derivados do cargo na organização:| Tipo de Usuário | Derivado De | Visualiza |
|---|---|---|
| Internal | Cargo de Owner, Admin ou Member na organização | Plataforma completa com base no acesso às funcionalidades |
| Customer | Tipo de usuário Customer | Dashboard simplificado, projetos atribuídos |
| External Collaborator | Cargo de External Collaborator na organização | Apenas projetos especificamente atribuídos |
Proteção de Rotas
O Apollo aplica permissões em múltiplos níveis:<ProtectedRoute>— requer autenticação (qualquer usuário logado)<FeatureRoute feature="...">— requer que a funcionalidade indicada esteja habilitada para o usuário<InternalRoute>— requer tipo de usuário interno<AdminRoute>— requer cargo de admin ou owner na organização
Row-Level Security (RLS)
Todas as tabelas do banco de dados possuem políticas de Row-Level Security aplicadas no nível do PostgreSQL. Mesmo que o frontend fosse contornado, o banco de dados aplica regras de acesso com base emauth.uid().