- Vue 3.5 + Vite 8 + PrimeVue 4 (Aura) + TailwindCSS 4 + DM Sans - Sistema de tenant multi-prefeitura: bootstrap, prefeituraStore, getTenant - Tema dinâmico por município via applyTemplate (9 paletas) - Logo e foto de fundo resolvidos a partir do VITE_API_URL + path relativo - HomeView: hero split com foto/gradiente, carousel de avisos, cards de serviços - LoginView: fluxo 2 etapas (documento na home → senha em /login) - Roteamento completo: público (/), serviços (/servicos/*), portal autenticado (/portal/*) - authStore + authService estruturados para Keycloak PKCE (integração pendente) - Placeholders para todas as telas da área logada Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
/**
|
|
* 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
|
|
},
|
|
}
|