Files
Seasoned/Seasoned.Frontend/app/plugins/auth-watch.ts
2026-03-20 18:54:27 +00:00

39 lines
1.1 KiB
TypeScript

export default defineNuxtPlugin((nuxtApp) => {
const showTimeout = useState('showSessionTimeout', () => false);
const isLoggedIn = useState('isLoggedIn');
nuxtApp.hook('app:created', () => {
const originalFetch = globalThis.$fetch;
globalThis.$fetch = originalFetch.create({
onRequest({ options }) {
if (import.meta.client) {
const token = localStorage.getItem('auth_token');
if (token) {
const headers = new Headers(options.headers);
headers.set('Authorization', `Bearer ${token}`);
options.headers = headers;
}
}
},
onResponseError({ response }) {
if (response.status === 401) {
console.warn("Session Interceptor: Caught 401 Unauthorized.");
const route = useRoute();
if (route.path !== '/login') {
isLoggedIn.value = false;
if (import.meta.client) {
localStorage.removeItem('auth_token');
}
showTimeout.value = true;
}
}
}
});
});
});