# Quickstart — Spec 004 Desk Account Management

**Status:** ✅ Fechada · validada Roger  
**API:** `0.9.4-desk-2fa-recovery`  
**URLs:** https://desk.ligbox.com.br · https://api.ops.ligbox.com.br

---

## Fluxo resumido

```
Cadastro → Root aprova → Ativação (2/3) → Login → Minha conta
```

---

## 1. Cadastro

1. https://desk.ligbox.com.br/register.html
2. E-mail (login) + senha + nome
3. Aguardar root

## 2. Aprovação (root)

1. **Mensagens** → pedido pendente
2. Escolher perfil → **Aprovar**
3. Candidato recebe e-mail + ticket

## 3. Ativação

1. Link `activate.html?token=...`
2. Completar **2 de 3**: e-mail · telefone · app (QR)
3. **Ativar conta**

OTP chega em `@ligbox.com.br` (VM108).

## 4. Login

- E-mail + senha
- + TOTP se configurou app na ativação
- **Código de backup** (`XXXX-XXXX`) — uso único, gerado na ativação
- **Perdi o autenticador** → OTP por e-mail cadastrado → novo QR → novos backup codes

## 5. Minha conta

1. Menu **⚙️ Minha conta**
2. Senha atual + nova + confirmar
3. + **Código 2FA** se 2FA ativo (segurança sessão aberta)
4. **Salvar nova senha**

---

## Variáveis (.env VM122)

```env
DESK_PUBLIC_URL=https://desk.ligbox.com.br
DESK_SMTP_HOST=10.10.10.122
DESK_SMTP_PORT=25
DESK_MAIL_FROM=ligbox-ops@ligbox.com.br
DESK_ROOT_NOTIFY_EMAIL=admin@ligbox.com.br
DESK_NTFY_BASE_URL=https://ntfy.sh
```

---

## Testes API

```bash
curl -s https://api.ops.ligbox.com.br/health

curl -s -X POST https://api.ops.ligbox.com.br/api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"username":"root","password":"..."}'

curl -s -X POST "https://api.ops.ligbox.com.br/api/v1/auth/activate/send-email-otp?token=TOKEN"

curl -s -X POST https://api.ops.ligbox.com.br/api/v1/auth/change-password \
  -H "Authorization: Bearer JWT" \
  -H 'Content-Type: application/json' \
  -d '{"current_password":"...","new_password":"...","totp_code":"123456"}'
```

---

## Troubleshooting

| Problema | Solução |
|----------|---------|
| E-mail não chega | `mailq` VM122; caixa `@ligbox.com.br` VM108 |
| QR não aparece | Ctrl+Shift+R; `/assets/qrcode.min.js` |
| Falha enviar OTP | Logs API; ntfy não bloqueia (fix v0.8) |
| Campos apagam ao digitar | Ctrl+Shift+R (fix T044 — refresh não mexe na tela) |
| Login pede 2FA | Normal se ativou com autenticador |
| Perdeu Google Authenticator | Login → **Perdi acesso ao autenticador** ou código backup |
| Sem backup nem e-mail | Root: reset manual SQLite (ver spec) |

---

## Docs

- `specs/004-desk-account-management/spec.md`
- `docs/email-ligbox-vm108.md`
- `docs/postfix-vm122.md`
