86 lines
2.7 KiB
Markdown
86 lines
2.7 KiB
Markdown
# Tasks — Spec 004 Desk Account Management
|
|
|
|
**Status:** ✅ **FECHADA** (2026-06-10)
|
|
**API:** `0.9.4-desk-2fa-recovery`
|
|
**Validação:** Roger — aprovado fim-a-fim
|
|
|
|
---
|
|
|
|
## Fase 1 — Cadastro e aprovação (004a)
|
|
|
|
- [x] **T001** Schema `desk_registration_requests`
|
|
- [x] **T002** `POST /api/v1/auth/register`
|
|
- [x] **T003** `register.html` + link no login
|
|
- [x] **T004** E-mail root + ticket pending
|
|
- [x] **T005** Tela Mensagens — aprovar / rejeitar
|
|
- [x] **T006** Aprovação + e-mail + ticket com link
|
|
- [x] **T007** PRG pós-cadastro
|
|
|
|
## Fase 2 — Postfix e e-mail (004-postfix)
|
|
|
|
- [x] **T010** Postfix VM122
|
|
- [x] **T011** `mail_notify.py` + env SMTP
|
|
- [x] **T012** Ticket postfix infra
|
|
- [x] **T013** LMTP VM108 `@ligbox.com.br`
|
|
- [x] **T014** Remetente `ligbox-ops@ligbox.com.br`
|
|
- [x] **T015** `transport_maps` → VM108:7025
|
|
- [x] **T016** `canonical_maps` legado → `@ligbox.com.br`
|
|
|
|
## Fase 3 — Ativação 2-de-3 + TOTP (004b)
|
|
|
|
- [x] **T020** `pyotp` + `totp_util.py`
|
|
- [x] **T021** Flags `*_verified`
|
|
- [x] **T022** `POST /activate` lógica 2-de-3
|
|
- [x] **T023** `activate.html` layout 3 colunas
|
|
- [x] **T024** QR local (`qrcode.min.js`)
|
|
- [x] **T025** Barra progresso X/2
|
|
- [x] **T026** `/login/mfa` + step login
|
|
- [x] **T027** ntfy tópico + push
|
|
- [x] **T028** Fix headers ntfy (Unicode)
|
|
|
|
## Fase 4 — UI pt-BR e docs
|
|
|
|
- [x] **T030** pt-BR UI/API/e-mails
|
|
- [x] **T031** Regra `portugues-brasil.mdc`
|
|
- [x] **T032** `docs/email-ligbox-vm108.md`
|
|
- [x] **T033** `docs/postfix-vm122.md`
|
|
- [x] **T034** Validação E2E Roger
|
|
- [x] **T035** Spec + quickstart
|
|
|
|
## Fase 5 — Minha conta (004 v2)
|
|
|
|
- [x] **T040** `POST /change-password`
|
|
- [x] **T041** TOTP obrigatório na troca (se ativo)
|
|
- [x] **T042** View Minha conta (todos perfis)
|
|
- [x] **T043** `GET /me` → `totp_enabled`
|
|
- [x] **T044** Formulário persistente (sem refresh apagar campos)
|
|
- [x] **T045** Validação Roger — Minha conta OK
|
|
|
|
## Fase 6 — Recuperação 2FA + backup codes (2026-06-16)
|
|
|
|
- [x] **T050** `backup_codes.py` — 10 códigos uso único
|
|
- [x] **T051** Backup na ativação (TOTP) + e-mail
|
|
- [x] **T052** `login/mfa` aceita `backup_code`
|
|
- [x] **T053** `mfa_recovery_store.py` + rotas API
|
|
- [x] **T054** Login UI — perdi autenticador + backup
|
|
- [x] **T055** Notificação root início/fim recuperação
|
|
- [x] **T056** Minha conta — contagem backup restantes
|
|
- [x] **T057** Spec + quickstart atualizados
|
|
|
|
---
|
|
|
|
## Deploy
|
|
|
|
```bash
|
|
cd /opt/ligbox-ops-platform
|
|
docker-compose -f docker-compose.mvp.yml build api frontend
|
|
docker-compose -f docker-compose.mvp.yml up -d api frontend
|
|
postfix check && systemctl reload postfix
|
|
```
|
|
|
|
## Verificação
|
|
|
|
```bash
|
|
curl -s https://api.ops.ligbox.com.br/health
|
|
# version: 0.8.0-desk-2fa-2of3
|
|
```
|