diff --git a/server/api/auth/login.post.ts b/server/api/auth/login.post.ts index 2004b14..8dc90c4 100644 --- a/server/api/auth/login.post.ts +++ b/server/api/auth/login.post.ts @@ -16,11 +16,16 @@ export default defineEventHandler(async (event) => { const { codeVerifier, codeChallenge, state } = await generatePkce() const returnTo = body.data.returnTo ?? '/portal/painel' - await savePkceState(state, { - codeVerifier, - returnTo, - createdAt: Date.now(), - }) + try { + await savePkceState(state, { + codeVerifier, + returnTo, + createdAt: Date.now(), + }) + } catch (err) { + console.error('[auth/login] falha ao salvar estado PKCE (Redis indisponível?):', (err as Error).message) + throw createError({ statusCode: 503, statusMessage: 'Serviço temporariamente indisponível. Tente novamente em instantes.' }) + } const redirectUri = callbackUrlFromEvent(event) const authUrl = buildAuthUrl({ diff --git a/server/api/proxy/[...path].ts b/server/api/proxy/[...path].ts index bb915bf..88a6c86 100644 --- a/server/api/proxy/[...path].ts +++ b/server/api/proxy/[...path].ts @@ -97,6 +97,9 @@ export default defineEventHandler(async (event) => { setResponseHeader(event, 'content-type', 'application/json; charset=utf-8') return body } - throw err + + // Erro de rede (backend inacessível — ECONNREFUSED, timeout, etc.) + console.error(`[proxy] backend inacessível: ${url}`, (err as Error).message) + throw createError({ statusCode: 503, statusMessage: 'Sistema temporariamente indisponível.' }) } }) diff --git a/src/error.vue b/src/error.vue new file mode 100644 index 0000000..f7235f1 --- /dev/null +++ b/src/error.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/pages/portal/debitos.vue b/src/pages/portal/debitos.vue index 602ab98..fdf8ab0 100644 --- a/src/pages/portal/debitos.vue +++ b/src/pages/portal/debitos.vue @@ -108,6 +108,7 @@ function getSegundoNome(texto) { size="small" show-gridlines selection-mode="multiple" + :is-row-selectable="({ data }) => data.codigoEstadoConta === 1" scrollable class="mt-2" > @@ -196,7 +197,7 @@ function getSegundoNome(texto) { :loading="isLoadingExtrato" @click="gerarExtratoPdf(false)" /> -