Histórias do usuário · Identidade e acesso
US-IDENTIDADE-001 · Cadastrar Pessoa com conta de acesso
Ator: operador autorizado a administrar o Perfil de Acesso solicitado.
Necessidade: cadastrar uma Pessoa física e sua conta na mesma operação.
Critérios de aceitação
- O cadastro conjunto aceita
accountquando a Pessoa tem papelUSERouASSOCIATE. - A API valida o direito de conceder o perfil e a disponibilidade do e-mail.
- A conta local é vinculada à Pessoa e à identidade Appwrite, sem hash de senha local.
- Falha no provisionamento impede a confirmação local. Se a confirmação local falhar depois, a API tenta remover a identidade Appwrite.
US-IDENTIDADE-002 · Entrar com identidade Appwrite
Ator: titular de uma conta vinculada ao Appwrite.
Necessidade: acessar a API com o JWT Appwrite e o Perfil de Acesso da conta local.
Critérios de aceitação
- A API resolve a conta pelo
appwriteSubjecte exige conta ativa com Perfil de Acesso. - Para conta legada ainda sem subject, pode usar o e-mail normalizado; uma conta já vinculada a outro subject não é aceita por esse caminho.
- A conta Appwrite não entra por
POST /v1/auth/loginnem altera a senha porPATCH /v1/users/me/password.
US-IDENTIDADE-003 · Entrar com conta local
Ator: titular de uma conta com credencial local.
Necessidade: autenticar-se diretamente na API com e-mail e senha.
Critérios de aceitação
- Conta ativa, sem
appwriteSubject, com hash local e senha correta recebe JWT da API. - Conta inexistente, inativa, vinculada ao Appwrite ou com senha incorreta recebe
401. - A mudança da própria senha exige a senha atual; token de máquina e conta Appwrite são recusados.
US-IDENTIDADE-004 · Administrar token de integração
Ator: titular de uma conta pessoal.
Necessidade: criar, listar e revogar credenciais de integração.
Critérios de aceitação
- A emissão exige Perfil de Acesso de Núcleo ou superior,
systemKeyde sistema habilitado e, quando informado,expiresAtfuturo. - O segredo completo é devolvido apenas na criação; a API armazena seu hash.
- O titular lista e revoga os próprios tokens. Token revogado, expirado, com segredo inválido ou dono inativo não autentica.
US-IDENTIDADE-005 · Acessar recursos no alcance autorizado
Ator: titular de uma conta autenticada.
Necessidade: executar operações permitidas pelo Perfil de Acesso e vínculos aplicáveis.
Critérios de aceitação
- Uma rota com perfil mínimo recusa uma conta abaixo desse nível.
- Operações que dependem de alcance resolvem a Pessoa vinculada à conta; ausência de vínculo vigente recusa a resolução.
- O serviço aplica as condições do recurso solicitado após a verificação do perfil e do alcance.
Fluxos críticos
Cadastro conjunto de Pessoa e conta
História relacionada: US-IDENTIDADE-001.
O operador informa os dados da Pessoa física, o papel, o e-mail, a senha inicial e o Perfil de Acesso. A operação grava a Pessoa e a conta local, vincula o appwriteSubject ao ID local e provisiona a identidade Appwrite. Uma falha no provisionamento desfaz a transação local; se a confirmação local falhar depois, a operação tenta remover a identidade externa. A criação administrativa de conta para uma Pessoa já cadastrada segue uma operação separada.
Entrada e saída pelo front com Appwrite
História relacionada: US-IDENTIDADE-002.
- O servidor do front cria a sessão Appwrite e obtém um JWT vinculado a ela.
- Com esse JWT, consulta a conta local. A API resolve a conta ativa pelo
appwriteSubjectou, para conta legada ainda sem vínculo, pelo e-mail normalizado. - Após o reconhecimento, o front grava o cookie de sessão e abre a aplicação. Se a API recusar a identidade, o front tenta revogar a sessão criada e invalida o JWT em cache.
- Na saída ou expiração, o front tenta revogar a sessão Appwrite, remove o cookie e invalida o JWT em cache.
O front reutiliza um JWT válido em cache ou obtém outro da sessão Appwrite. A API avalia o Perfil de Acesso, os vínculos e o recurso a cada operação protegida.
Recuperação e troca de senha
Histórias relacionadas: US-IDENTIDADE-002 e US-IDENTIDADE-003.
O front solicita e conclui a recuperação de senha pelo Appwrite. A conta Appwrite autenticada também troca sua senha pelo Appwrite. A conta com credencial local troca a própria senha pela API, após informar a senha atual; esse caminho não aceita contas Appwrite nem tokens de máquina.