/** * Serviço de autenticação — Keycloak PKCE * * Fluxo: * 1. Home coleta o documento (CPF/CNPJ) * 2. Redireciona para /login?doc=XXX * 3. LoginView exibe o documento e solicita a senha * 4. Ao submeter, este serviço inicia o PKCE e redireciona ao Keycloak * 5. Keycloak devolve ao callback com o code * 6. handleCallback troca o code pelo token e salva na authStore */ const KEYCLOAK_BASE = import.meta.env.VITE_KEYCLOAK_URL ?? 'https://sso.modumfiscal.com.br/realms/modumfiscal-dev' const CLIENT_ID = import.meta.env.VITE_KEYCLOAK_CLIENT_ID ?? 'portal-modumfiscal' const REDIRECT_URI = `${window.location.origin}/callback` export const authService = { async iniciarLogin(documento) { // Implementar PKCE com pkce-challenge quando integrar com Keycloak // Por ora redireciona para /login com o documento return { documento } }, async handleCallback(code) { // Trocar code por token via Keycloak // A ser implementado na fase de integração throw new Error('Keycloak callback não implementado nesta fase') }, logout() { const logoutUrl = `${KEYCLOAK_BASE}/protocol/openid-connect/logout?redirect_uri=${encodeURIComponent(window.location.origin)}` window.location.href = logoutUrl }, }