auth.security
Trocar a senha de um usuário autenticado.
Um método, e o menor namespace do SDK — mas a distinção que ele faz importa mais que o tamanho dele.
changePassword
changePassword({ password, new_password, nonce }) → null
Substitui a senha do usuário atualmente autenticado.
await nulvless.auth.security.changePassword({
password: currentPassword,
new_password: newPassword,
});passwordstringRequiredA senha atual.
new_passwordstringRequiredVerificada contra as regras de tamanho, caracteres e vazamento do ambiente —
as mesmas que o cadastro aplica. Uma senha rejeitada responde
400 password_weak.
noncestringOptionalConfirmação de sudo para esta chamada.
Por que pedir a senha atual, se a pessoa já está autenticada
Uma sessão prova quem entrou. Ela não prova quem está no teclado agora — um notebook destravado é uma sessão autenticada nas mãos de outra pessoa. Exigir a senha antiga faz da troca de senha algo que só o dono da conta consegue fazer, e não algo que uma sessão emprestada consegue.
Exige sudo
Além disso, o ambiente pode colocar essa ação atrás de manage_passwords. Duas
verificações independentes, pelo mesmo motivo.
Encerre as outras sessões
Trocar a senha não encerra sessões em outros lugares. Se o motivo da troca foi suspeita de comprometimento, a sessão comprometida sobrevive a ela — então combine as duas coisas:
await nulvless.auth.security.changePassword({ password, new_password });
await nulvless.auth.signOut('others');O 'others' mantém a pessoa autenticada onde ela está e derruba todo o resto. O
signOut cobre os escopos.
Senhas esquecidas
Quem não consegue entrar não consegue chamar este método — não há sessão nem senha atual para informar. Esse caminho vive no client de topo e funciona provando controle do endereço:
await nulvless.auth.recover({ email });
await nulvless.auth.resetPassword({ token, password });O recover resolve do mesmo jeito estando o endereço registrado ou não, então o
seu texto deve dizer "se esse endereço estiver cadastrado, enviamos um link" em
vez de confirmar qualquer coisa. Veja auth.