Regras de negócio · Identidade e acesso

RN-IDENTIDADE-001 · Titular da conta no cadastro conjunto

Condição: o cadastro de Pessoa inclui uma conta de acesso.

Resultado: a Pessoa deve ser física e ter papel USER ou ASSOCIATE; caso contrário, a API recusa o cadastro conjunto.


RN-IDENTIDADE-002 · Concessão de Perfil de Acesso

Condição: um operador cria ou altera uma conta e define seu Perfil de Acesso.

Resultado: somente uma conta pessoal com acesso global ou administração do sistema pode administrar usuários. Acesso global não pode conceder acesso global nem administração do sistema; a administração do sistema pode conceder esses perfis.


RN-IDENTIDADE-003 · Unicidade do vínculo de conta

Condição: uma nova conta é vinculada a uma Pessoa e a um e-mail.

Resultado: a API recusa a criação quando o e-mail ou a Pessoa já estão vinculados a outra conta.


RN-IDENTIDADE-004 · Credencial da conta Appwrite

Condição: a conta é provisionada com identidade Appwrite.

Resultado: a conta local guarda appwriteSubject e mantém passwordHash nulo. O Appwrite guarda a senha. A API não aceita essa conta no login nem na alteração local de senha.


RN-IDENTIDADE-005 · Confirmação do cadastro conjunto

Condição: o cadastro cria Pessoa, conta local e identidade Appwrite.

Resultado: falha no provisionamento desfaz a transação local. Se o provisionamento concluir e o commit local falhar, a API tenta excluir a identidade Appwrite criada.


RN-IDENTIDADE-006 · Autenticação local

Condição: uma conta tenta entrar por POST /v1/auth/login.

Resultado: a API emite JWT apenas quando a conta está ativa, não tem appwriteSubject, possui hash local e a senha está correta. Caso contrário, responde 401 para credenciais inválidas.


RN-IDENTIDADE-007 · Resolução da identidade Appwrite

Condição: a API recebe uma identidade Appwrite autenticada.

Resultado: procura a conta local primeiro pelo appwriteSubject. Sem correspondência, pode usar o e-mail normalizado apenas para conta legada ainda sem subject. A conta deve estar ativa e ter Perfil de Acesso.


RN-IDENTIDADE-008 · Token de integração

Condição: um usuário emite ou usa um token de integração.

Resultado: a emissão exige conta pessoal com Perfil de Acesso de Núcleo ou superior, sistema habilitado e expiração futura quando informada. O segredo completo é devolvido somente na criação; a API persiste seu hash. Token expirado, revogado, com segredo incorreto ou de titular inativo não autentica. O titular só lista e revoga os próprios tokens.


RN-IDENTIDADE-009 · Autorização por perfil e alcance

Condição: uma operação protegida exige Perfil de Acesso ou alcance efetivo.

Resultado: a API compara o perfil ao mínimo da rota. Ao resolver o alcance de uma conta pessoal, exige Pessoa vinculada e considera os vínculos aplicáveis. O serviço da operação decide o acesso final ao recurso.

Camadas do domínio