Update auth and logs

This commit is contained in:
2025-06-04 13:45:02 +02:00
parent 7f31ae1d5a
commit ed1786da65
3 changed files with 234 additions and 213 deletions

View File

@@ -42,8 +42,8 @@ var auth = createAuth({
authRedirect: '/auth/login', authRedirect: '/auth/login',
loginData: {url: '/api/auth/login', method: 'POST', redirect: '/'}, loginData: {url: '/api/auth/login', method: 'POST', redirect: '/'},
logoutData: {url:'/api/auth/logout', redirect: '/auth/login'}, logoutData: {url:'/api/auth/logout', redirect: '/auth/login'},
fetchData: {url: '/api/auth/fetch-user', method: 'GET', enabled: true}, fetchData: {url: '/api/auth/fetch-user', method: 'GET', enabled: false},
refreshData: {url: '/api/auth/refresh-token', method: 'GET', enabled: true} refreshData: {url: '/api/auth/refresh-token', method: 'GET', enabled: false}
} }
}); });

View File

@@ -3,64 +3,92 @@ import { useAuth } from '@websanova/vue-auth/src/v3.js';
import axios from 'axios'; import axios from 'axios';
import { onMounted, ref } from 'vue'; import { onMounted, ref } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { msalInstance } from './MsalConfig'; // wherever you created your MSAL instance import { msalInstance } from './MsalConfig';
const router = useRouter() const router = useRouter();
const auth = useAuth(); const auth = useAuth();
const message = ref('') const message = ref('');
const visible = ref(false);
onMounted(async () => { onMounted(async () => {
console.log("Mounted on callback") console.log('[Callback] Mounted on callback');
try {
await msalInstance.initialize() await msalInstance.initialize();
console.log("After initialize on callback") console.log('[Callback] After initialize on callback');
} catch (e) {
console.error('[Callback] Errore durante initialize MSAL:', e);
message.value = "Errore durante l'inizializzazione di MSAL.";
visible.value = true;
return;
}
const response = await msalInstance.handleRedirectPromise() let response;
try {
response = await msalInstance.handleRedirectPromise();
console.log('[Callback] handleRedirectPromise response:', response);
} catch (e) {
console.error('[Callback] Errore in handleRedirectPromise:', e);
message.value = 'Errore durante la gestione del redirect.';
visible.value = true;
return;
}
console.log("Response:",response) if (response && response.accessToken) {
message.value = 'Logging in to the application...';
console.log('[Callback] AccessToken presente:', response.accessToken);
console.log('[Callback] Account info:', response.account);
localStorage.setItem('msalUser', JSON.stringify(response.account));
if (response) { try {
message.value ="Logging in to the application..." console.log('[Callback] Chiamata a /msauth/exchange con accessToken...');
localStorage.setItem('msalUser', JSON.stringify(response.account)) const res = await axios.post(
axios.post("/msauth/exchange",{}, { '/msauth/exchange',
headers: { Authorization: `Bearer ${response.accessToken}` } {},
}).then(res=>{ {
if(res.data.token){ headers: { Authorization: `Bearer ${response.accessToken}` }
auth.token(null,res.data.token,false);
auth.fetch().then(response=>{
console.log("1 user :" , response.data.data);
if (!response.data.data.selectedProject) {
router.push({ name: 'projects-list' });
} else {
router.push({ name: 'ks-document' });
} }
);
console.log('[Callback] Risposta da /msauth/exchange:', res);
}).catch(res=>{ if (res.data.token) {
console.log("Error on token exchange:",res) console.log('[Callback] Token backend ricevuto:', res.data.token);
message.value = "Error authenticating on the application. Did you ask for authorization?" auth.token(null, res.data.token, false);
try {
console.log('[Callback] Chiamata a auth.fetch()...');
const userResponse = await auth.fetch();
console.log('[Callback] Risposta user fetch:', userResponse);
console.log('[Callback] userResponse.data:', userResponse.data);
console.log('[Callback] userResponse.data.data:', userResponse.data.data);
if (!userResponse.data.data.selectedProject) {
console.log('[Callback] Nessun progetto selezionato, redirect a projects-list');
router.push({ name: 'projects-list' });
} else {
console.log('[Callback] Progetto selezionato, redirect a scenario-list');
router.push({ name: 'scenario-list' });
}
} catch (fetchErr) {
console.error('[Callback] Errore su fetch user dopo token exchange:', fetchErr);
message.value = 'User not configured for this application. Contact the administrator for details.';
visible.value = true;
}
} else {
message.value = 'User not configured for this application. Contact the administrator for details.';
console.error('[Callback] Nessun token ricevuto dal backend:', res.data);
}
} catch (error) {
console.error('[Callback] Error on token exchange:', error.response ? error.response.data : error);
message.value = 'An error occurred during the token exchange. Please try again.';
visible.value = true; visible.value = true;
}
}); } else {
}else{ console.error('[Callback] Invalid response o access token mancante:', response);
message.value = "Error authenticating on the application. Did you ask for authorization?" message.value = 'Authentication failed. Please log in again.';
console.error("No token exchange with backend") visible.value = true;
} }
});
}).catch(res=>{
console.log(res.data)
message.value = "Error authenticating on the application. Did you ask for authorization?"
});
}
})
</script> </script>
<template> <template>
<div>{{message}}</div> <div>{{ message }}</div>
</template> </template>

File diff suppressed because one or more lines are too long