Entidades e relacionamentos · Identidade e acesso

Modelo de identidade

A API mantém o cadastro da Pessoa, a conta local e os vínculos necessários à autorização. O Appwrite mantém a identidade e a sessão usadas pelo front. A conta local identifica seu titular por person_id e sua identidade externa por appwrite_subject.

EntidadeIdentificador e campos principaisFunção
peopleid UUID, natureza, dados da Pessoa e papéis institucionais em rolesRepresenta a Pessoa titular da conta.
usersid UUID, person_id, appwrite_subject, email único, name, password_hash anulável, access_profile, active e datas de registroIdentifica a conta local usada pela API na autorização; contas locais distintas também a usam na autenticação própria.
nucleiid UUID, sigla única, name e datas de registroRepresenta um núcleo ao qual a conta pode estar vinculada.
user_nucleiuser_id, nucleus_id, role e data de criaçãoAssocia uma conta a um núcleo.
api_tokensid UUID, owner_id, name, secret_hash, scopes, expiração, revogação e último usoGuarda credenciais de integração associadas a uma conta local.

Relacionamentos

OrigemDestinoRestrição
users.person_idpeople.idIdentifica a Pessoa titular; pode ser nulo em contas legadas ainda sem vínculo.
user_nuclei.user_idusers.idChave estrangeira com exclusão em cascata.
user_nuclei.nucleus_idnuclei.idChave estrangeira com exclusão em cascata.
api_tokens.owner_idusers.idChave estrangeira com exclusão em cascata.

A chave composta user_id + nucleus_id impede repetir o mesmo vínculo. No cadastro conjunto, a API associa a conta à Pessoa e cria a identidade Appwrite com o ID da conta local. Contas Appwrite têm appwrite_subject = users.id e password_hash = NULL; somente contas locais distintas mantêm hash de senha. A migração remove os hashes de contas já vinculadas ao Appwrite. Na autenticação Appwrite, appwrite_subject identifica a conta; a busca temporária por e-mail atende contas legadas sem esse vínculo até sua reconciliação por manifesto operacional.

Camadas do domínio