Solução de Problemas

Erro "Permissão negada" ao tentar fazer alguma coisa

Por que aparece, como identificar a capability faltando e como resolver.

Quando você vê "Permissão negada: <alguma_coisa>" ou um erro 403, o problema é simples: o papel do seu usuário não tem a capability necessária pra aquela ação.

Por que acontece

Toda Server Action no PetShop Flow segue o padrão:

const ctx = await requirePetShop();
assertCan(ctx, "<capability>");

Se o papel não bater, o servidor lança o erro independente do que a interface mostra. A UI pode até mostrar um botão (cache de página), mas a operação é bloqueada no backend.

Como identificar a capability

A mensagem completa traz o nome técnico. Exemplos:

  • Permissão negada: manage_appointments → você não pode criar/alterar agendamento.
  • Permissão negada: manage_payments → não pode mexer em integração Asaas.
  • Permissão negada: manage_team → não pode convidar nem trocar papel.
  • Permissão negada: view_reports → não tem acesso a relatórios.

A lista completa de capabilities e quem tem cada uma está em Papéis disponíveis.

Como resolver

Caso 1: você é o usuário afetado

  1. Veja qual papel você tem em /equipe (procura seu nome).
  2. Confirma com o administrador se esse é o papel correto.
  3. Peça pra ele te promover ou pra ele executar a ação.

Caso 2: você é administrador e quer dar a permissão

  1. /equipe → editar o funcionário.
  2. Troque o papel pra um que inclua a capability necessária.
  3. Salve.
  4. Peça pro funcionário fazer logout e login (alguns valores ficam em cache de sessão).

Caso 3: papel está certo mas o erro continua

  • Tenha certeza que está logado na pet shop certa (se o usuário tem membership em mais de uma).
  • Faça logout e login pra renovar a sessão.
  • Limpe cookies do petshopflow.com se nada resolver.

Erros parecidos

  • "Pet shop não encontrada": você está logado em um contexto sem pet shop. Acesse pelo painel da pet shop certa.
  • "Você precisa estar logado": sua sessão expirou. Faça login.
  • "Permissão negada" vindo de um endpoint público (booking): mais raro — fala com o suporte.

Perguntas frequentes

O cliente final (booking) recebe esse erro?

Não. Esse erro é interno, só pra equipe da loja. Cliente final usa rotas públicas com regras diferentes.

Posso ter dois papéis ao mesmo tempo?

Cada membership tem um papel. Se você precisa de mais permissão pontualmente, peça uma promoção temporária ao admin.

Funcionário desligado ainda consegue entrar?

Desativa a membership em /equipe. Sem membership ativa, ele recebe "Pet shop não encontrada" ao tentar acessar.