# 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.