Skip to content

B06: Identity — usuários, cadastro e login com token - #92

Merged
tecrodrigocastro merged 7 commits into
mainfrom
feat/b06-identity-login
Nov 6, 2026
Merged

tecrodrigocastro merged 7 commits into
mainfrom
feat/b06-identity-login

Conversation

@tecrodrigocastro

Copy link
Copy Markdown
Member

Resumo

  • users movido pro módulo Identity, UUID como PK (ADR 0007), com locale/photo_path
  • Cadastro (POST /auth/register) com verificação de e-mail (link assinado, Mailpit testado de verdade)
  • Login (POST /auth/login) emite token Sanctum nomeado pelo dispositivo (ou User-Agent), expiração configurável via .env (SANCTUM_EXPIRATION_MINUTES)
  • Logout (POST /auth/logout) revoga o token atual; POST /auth/logout-all revoga todos
  • GET /me — roles fica [] até o módulo Community (B09 · Community: comunidades e edições com máquina de estados #9/B10 · Community: equipe, papéis e convites #14) existir
  • Política de senha (mínimo 10, Password::uncompromised()) + throttle:login (limiter da B05) — bloqueio após tentativas seguidas
  • AuthController único (register/login/logout/logoutAll/verifyEmail/resendVerification) em vez de um arquivo por ação

Bugs reais encontrados e corrigidos no caminho

  • Larastan rodava sem a extensão do Laravel desde a B01 — phpstan.neon nunca incluía vendor/larastan/larastan/extension.neon. Corrigido; nenhum erro novo em código existente.
  • O arch test de "módulo não depende de App\" nunca funcionou — expect('PHPeste') não resolve o namespace raiz através dos path-repositories symlinkados. Corrigido iterando módulo × subpasta real.
  • Route::apiV1() quebrava dentro de rota de módulo — internachi/modular carrega rotas num hook booting() que dispara antes do boot() de qualquer provider. Corrigido movendo o registro da macro pro register().
  • personal_access_tokens.tokenable_id ainda era unsignedBigInteger (morphs) — trocado pra uuidMorphs, senão não bateria com o novo PK de users.

Test plan

  • composer check (pint + phpstan nível 8 + rector --dry-run + pest, 303 testes) passa
  • composer audit sem vulnerabilidades
  • Testado via infra/dev.sh com Mailpit real: cadastro → e-mail de verificação chega → link assinado verifica → login → /me → logout → token revogado falha imediatamente (confirmado por HTTP real, não só teste)
  • Scramble: as 7 rotas de Identity aparecem documentadas e agrupadas sob "Identity"
  • Teste confirma que senha nunca aparece em resposta de cadastro, login ou /me

@tecrodrigocastro
tecrodrigocastro merged commit 6ced714 into main Nov 6, 2026
4 checks passed
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