obsidian-vault/Pizza-Digital/PRD/PRD-SPEC-USUARIOS.md

2.3 KiB

PRD — Usuários, senha e sessão

Campo Valor
Produto Pizza Digital
Versão app auditada v0.5.0
Ambiente https://pizza.itecnologys.com · VM125 · loja pizza-digital-piloto
Spec de origem docs/SPEC-USUARIOS.md
Módulo Auth + equipe
Rotas UI /login /admin/equipe /forgot-password /reset-password
APIs /api/auth/* /api/users/*
Data 2026-11-09
Estilo PRD operacional detalhado (visão de desenvolvedor)
Audiência Dev / QA / Product

Como ler: cada seção descreve o processo real (o que o sistema faz hoje), com passos de usuário, chamadas de API, regras de negócio e estados. Status: ✅ construído · ⚠️ parcial · ⏳ especificado / não entregue · 🐛 gap observado.

1. Entidades

User, AuthToken, PushDevice, NotifyLog, UserCapability

2. Processo — login

  1. UI /login (demo: pdv@pizza.local / 805353 + storeSlug)
  2. POST /api/auth/login { email, password, storeSlug }
  3. Valida hash bcrypt; incrementa failedLoginAttempts
  4. 5 falhas → lockedUntil +15 min
  5. Sucesso → JWT + user + capabilities
  6. GET /api/auth/me para refresh de sessão

3. Processo — política de senha

  1. GET /api/auth/password-policy
  2. Regras: ≥8, 1 upper, 1 lower, 1 dígito, sem local-part email
  3. Código: password-policy.ts

4. Processo — CRUD equipe

  1. Cap staff.view lista GET /api/users
  2. Cap staff.manage cria POST /api/users (role, áreas, jobTitle)
  3. Criar gestor extra exige owners.manage
  4. Pode aplicar template na criação
  5. POST /api/users/:id/send-reset dispara token reset

5. Processo — forgot / reset

  1. POST /api/auth/forgot-password → resposta genérica
  2. Token password_reset TTL 60 min
  3. POST /api/auth/reset-password consome token, limpa lockout
  4. POST /api/auth/change-password (autenticado)

6. Aceite

  • ✅ Login/lockout/policy/CRUD/reset stub
  • ⏳ SMTP/push produção (RF-USR-10)

7. Camada de serviço (AuthService)

Método Fluxo
login storeSlug+email+senha → JWT; lockout
me Rehidrata user+caps
requestPasswordReset Token genérico
resetPassword Consome token
changePassword Autenticado

UsersService: list/meta/create/update/sendReset/pushDevice.