Visão Geral
O SSO distribui autenticação para apps em outros domínios de duas formas:| Cenário | Mecanismo | Quando usar |
|---|---|---|
App interno (subdomínio .easygoal.com.br) | ?eg_session=<token> no redirect | app-front, club LP, sites internos |
| App externo (domínio externo, API key obrigatória) | ?eg_token=<token> + POST /auth/verify | parceiros, integrações terceiras |
eg_session (setado em .easygoal.com.br) naturalmente para todos os subdomínios — o SSO apenas replica o token para apps que não alcançam o cookie.
App Interno — Fluxo com eg_session
EgSessionProvider lê /api/auth/session (rota gerada pelo package) que retorna os claims do eg_session cookie.
App Externo — Fluxo com eg_token
Para apps em domínios externos (sem acesso ao cookie .easygoal.com.br):
Pré-requisitos para apps externos
- Produto registrado no SSO com
status: approved - URL do callback cadastrada em
saas_products.redirect_urls - API key ativa para o produto
Verificar sessão server-side
Para proteger rotas ou verificar autenticação em Server Components/middleware:/auth/check é ideal para middleware de proteção de rotas — não redireciona, apenas retorna JSON com { authenticated, session }.
Proteção de páginas admin via auth/check
Funcionalidade planejada. Para proteger páginas da documentação (ou qualquer app) exclusivamente para administradores, seria necessário adicionar
is_super_admin ao EgSessionClaims no SSO. O campo existe em AuthUser do monorepo mas ainda não é injetado no eg_session JWT. Após essa adição, o middleware pode verificar session.is_super_admin === true via /auth/check.Checklist de Integração
Produto registrado no SSO (apenas para apps externos)
URL do callback cadastrada em
saas_products.redirect_urlsCallback route implementado com
createCallbackRouteEgSessionProvider adicionado ao layout raizURL do callback cadastrada em Supabase → Auth → Redirect URLs
Variáveis
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_SSO_URL configuradas