Skip to content

feat(auth): add session management options to credential change endpoints#15

Merged
lucas-adm merged 1 commit intoNoteHubBR:mainfrom
lucas-adm:feat/disconnect-all-sessions
Apr 15, 2026
Merged

feat(auth): add session management options to credential change endpoints#15
lucas-adm merged 1 commit intoNoteHubBR:mainfrom
lucas-adm:feat/disconnect-all-sessions

Conversation

@lucas-adm
Copy link
Copy Markdown
Member

Sumário

Adição da funcionalidade de desconexão de sessões ao alterar senha ou e-mail, permitindo que o usuário invalide outros dispositivos ativos no momento da troca de credenciais.

Alterações

  • Adicionados os campos disconnectAll e keepCurrentSession nos DTOs ChangePasswordREQ e ChangeEmailREQ
  • Injetados TokenService e HttpServletRequest no UserController
  • Adicionadas chamadas condicionais a tokenService.disconnectAll(...) nos endpoints PATCH /change-password e PATCH /change-email
  • Implementado o método disconnectAll(...) na interface TokenService e em TokenServiceImpl
  • Adicionado o método findAllByUserEmail(String email) em TokenRepository
  • Atualizadas as descrições de erro 400 nos endpoints afetados na documentação OpenAPI, detalhando os códigos INVALID_DEVICE_ID e SAME_PASSWORD/SAME_EMAIL

Necessidade

Ao trocar senha ou e-mail, é uma boa prática de segurança permitir que o usuário encerre sessões abertas em outros dispositivos. Com os novos campos disconnectAll e keepCurrentSession, o cliente pode optar por invalidar todas as sessões (ou todas exceto a atual) no momento da atualização das credenciais.

Teste manual

  1. Autenticar com um usuário em dois dispositivos/sessões distintas
  2. Na sessão principal, enviar PATCH /users/change-password com disconnectAll: true e keepCurrentSession: false — verificar retorno 204 e que a outra sessão foi invalidada
  3. Repetir o passo anterior com keepCurrentSession: true — verificar que apenas a sessão atual permanece ativa
  4. Enviar PATCH /users/change-password com disconnectAll: false — verificar que nenhuma sessão é encerrada
  5. Repetir os passos 2, 3 e 4 para PATCH /users/change-email
  6. Testar com X-Device-Id ausente ou inválido e verificar retorno 400 com código INVALID_DEVICE_ID

Checklist

  • Código segue o padrão do projeto
  • Documentação atualizada
  • Testes adicionados/atualizados

Breaking Changes

  • Nenhuma

@lucas-adm lucas-adm merged commit a4fc38e into NoteHubBR:main Apr 15, 2026
1 check passed
@lucas-adm lucas-adm deleted the feat/disconnect-all-sessions branch April 15, 2026 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant