diff --git a/app/pages/auth/cie/callback.vue b/app/pages/auth/cie/callback.vue index efefe76..0eeeeb4 100644 --- a/app/pages/auth/cie/callback.vue +++ b/app/pages/auth/cie/callback.vue @@ -16,6 +16,21 @@ const state = computed(() => { return typeof value === 'string' ? value : '' }) +const providerError = computed(() => { + const value = route.query.error + return typeof value === 'string' ? value : '' +}) + +const providerCieError = computed(() => { + const value = route.query.cie_error + return typeof value === 'string' ? value : '' +}) + +const providerErrorDescription = computed(() => { + const value = route.query.error_description + return typeof value === 'string' ? value : '' +}) + const isLoading = ref(true) const errorMessage = ref('') const statusMessage = ref('Verifica dell’autenticazione CIE in corso...') @@ -50,6 +65,18 @@ const redirectToLoginError = async (code: string, fallbackMessage: string) => { } const checkSession = async () => { + if (providerError.value || providerCieError.value) { + const isCancelled = providerErrorDescription.value.toLowerCase().includes('rejected by user') + || providerError.value === 'access_denied' + || providerCieError.value === 'invalid_request' + + await redirectToLoginError( + isCancelled ? 'cancelled' : 'failed', + providerErrorDescription.value || 'Autenticazione CIE non completata. Riprova dal login.' + ) + return + } + if (!state.value) { await redirectToLoginError('invalid_session', 'Sessione CIE non valida: parametro state mancante.') return diff --git a/app/pages/auth/login.vue b/app/pages/auth/login.vue index a969139..fdc19fd 100644 --- a/app/pages/auth/login.vue +++ b/app/pages/auth/login.vue @@ -28,6 +28,7 @@ const cieErrorMessage = computed(() => { const messages: Record = { invalid_session: 'Sessione CIE non valida o incompleta. Avvia di nuovo accesso con CIE.', + cancelled: 'Accesso con CIE annullato. Se vuoi, riprova dal pulsante Entra con CIE.', failed: 'Autenticazione CIE non completata. Riprova dal pulsante Entra con CIE.', timeout: 'Tempo di attesa scaduto durante verifica CIE. Riprova.', verification_error: 'Errore durante verifica autenticazione CIE. Riprova tra poco.'