Saltar para o conteúdo principal

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 em organization_members. Controla o acesso em toda a organização.
CargoPermissões
OwnerControle total — faturamento, configurações, gestão de membros, todas as funcionalidades
AdminGerenciar membros, equipes e a maioria das configurações. Não pode excluir a organização ou gerenciar faturamento
MemberAcesso a funcionalidades com base nos cargos de equipe e board. Não pode gerenciar configurações da organização
External CollaboratorAcesso limitado apenas a projetos especificamente atribuídos

Camada 2: Equipe

Gerenciado em team_members. Controla recursos no escopo da equipe.
CargoPermissões
LeadGerenciar configurações da equipe, membros, configuração de funcionalidades e atribuições de projetos
MemberAcesso a projetos, tarefas, releases e base de conhecimento da equipe

Camada 3: Board (Projeto)

Gerenciado em user_project_access.board_role. Controla o acesso por projeto.
CargoPermissões
OwnerControle total do projeto — configurações, membros, exclusão
EditorCriar e modificar tarefas, releases e páginas da base de conhecimento
ViewerAcesso somente leitura aos recursos do projeto

Tipos de Usuário

Derivados do cargo na organização:
Tipo de UsuárioDerivado DeVisualiza
InternalCargo de Owner, Admin ou Member na organizaçãoPlataforma completa com base no acesso às funcionalidades
CustomerTipo de usuário CustomerDashboard simplificado, projetos atribuídos
External CollaboratorCargo de External Collaborator na organizaçãoApenas 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 em auth.uid().