Convidando um funcionário pra sua equipe
Como mandar convite por e-mail, reaproveitar convites ativos e revogar acesso.
Você convida gente pra equipe a partir do e-mail. O sistema gera um link único, manda por e-mail (se Resend estiver configurado) e a pessoa entra clicando no link.
Pré-requisitos
- Permissão
manage_team(administrador ou gestor). - E-mail válido do convidado.
- Saber qual papel ele vai ter (administrador, gestor, atendente, tosador, banhista, veterinário, recepção). Veja papéis disponíveis.
Passo a passo
- Vá em /equipe.
- Clique em Convidar membro.
- Digite o e-mail (normalizado pra minúsculas).
- Escolha o papel.
- Envie.
[SCREENSHOT: Formulário de convite]
O que o PetShop Flow faz
- Valida e-mail e papel com Zod.
- Reaproveitamento: se já existe convite ativo (não usado, não revogado, não expirado) pro mesmo e-mail, devolve o link existente sinalizando
reused: true. - Senão, gera um token URL-safe de 43 caracteres e cria o convite com data de expiração.
- Tenta enviar por e-mail via Resend com o template de convite (assunto, HTML, texto).
- Se o e-mail não foi configurado, devolve o link copiável pra você mandar manual (ex.: pelo WhatsApp).
O lado do convidado
Quando ele clica no link /convite/<token>:
- Sistema valida o token (mínimo 16 caracteres) e aplica rate limit por token (3 tentativas a cada 5 min).
- Confere que o usuário está logado. Se não, manda pra login antes.
- Verifica que o convite existe, não foi usado, não foi revogado e não expirou.
- Confirma que a pet shop ainda existe.
- Verifica se o usuário já tem membership ativa nessa loja — se sim, recusa com "Você já faz parte dessa equipe."
- Cria ou ativa a membership com o papel definido no convite.
- Marca o convite como usado.
- Redireciona pra /dashboard.
Revogar convite ativo
Se você convidou e quer cancelar antes do uso:
- Vá em /equipe → Convites pendentes.
- Clique em Revogar no convite.
- O PetShop Flow marca
revokedAt = now()— o link deixa de funcionar imediatamente.
Perguntas frequentes
O convite expira sozinho?
Sim. Por padrão tem prazo de expiração definido no banco (expiresAt). Depois de vencido, o link retorna "Este convite expirou."
Posso convidar pro mesmo e-mail várias vezes?
Pode, mas o PetShop Flow é idempotente: se já existe convite ativo, reutiliza o mesmo link em vez de criar outro. Isso evita confusão.
A pessoa não recebe o e-mail. O que faço?
Você ainda tem o link no painel. Copie e mande por WhatsApp. Se Resend não está configurado, todo convite vem assim por padrão.
Funcionário trocou de papel. Como atualizo?
Em /equipe, mude o papel direto — não precisa novo convite.