32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# Integração de identidade Elo Pro
|
|
|
|
O Adaptador não cria usuário, senha, cadastro ou papel próprio. A sessão de produção é a do Supabase Auth. O workspace ativo chega no cookie `elo_pro_workspace_id` e é conferido no servidor contra a membership.
|
|
|
|
## Contexto autenticado
|
|
|
|
`resolveAuth` devolve `AuthenticatedContext`:
|
|
|
|
- `userId`
|
|
- `workspaceId`
|
|
- `role`
|
|
- `permissions` (`adapter.session`, `adapter.use`, `adapter.manage`, `adapter.upload`)
|
|
- `moduleEnabled`
|
|
|
|
APIs passam por `requireReady`. Serviços chamam `assertUse`, que relê a flag no banco. Um `workspaceId` no corpo não substitui o cookie validado. `rejectWorkspaceForgery` registra a tentativa.
|
|
|
|
## Contrato ainda não confirmado
|
|
|
|
`src/server/auth/identity-port.ts` lista as tabelas que o código lê hoje. O status é `unconfirmed_against_real_elo_pro`, exceto a flag do módulo, que é específica do Adaptador. Quando o repositório da Elo Pro estiver acessível, a adaptação acontece nesse ponto. Não há migration definitiva da Elo Pro neste repositório.
|
|
|
|
## Desenvolvimento
|
|
|
|
`ADAPTER_DEV_AUTH=1` só funciona com `NODE_ENV` diferente de `production` e com `ADAPTER_DEV_AUTH_SECRET`. Em produção a validação de ambiente recusa a flag, e `devAuthEnabled()` permanece falso.
|
|
|
|
## Testes
|
|
|
|
- Workspace de outro usuário não lista nem baixa o arquivo.
|
|
- `workspaceId` forjado é recusado.
|
|
- Usuário sem membership não opera.
|
|
- Módulo desligado bloqueia mesmo que o contexto do cliente diga o contrário.
|
|
- Produção ignora a sessão de desenvolvimento.
|