// Глобальный auth-middleware: при наличии jwtoken-куки подтягивает профиль в // useState('profileData') один раз за сессию (если ещё не загружен). На 400/401 // считает токен невалидным и чистит куку. Работает и на SSR, и на клиенте. export default defineNuxtRouteMiddleware(async () => { const cookie = useCookie('jwtoken', { path: '/', secure: true, httpOnly: false, sameSite: 'lax' }); if (!cookie.value) return; const profileData = useState('profileData', () => null); if (profileData.value) return; const headers = import.meta.server ? useRequestHeaders(['cookie']) : {}; const runtimeConfig = useRuntimeConfig(); const fetchProfile = () => $fetch('/bff/authorization/get-profile', { headers: { ...headers, 'x-domain': runtimeConfig.public.xDomain, 'Content-Type': 'application/json', }, }); try { profileData.value = await fetchProfile(); } catch (error: any) { if (error?.statusCode === 400 || error?.statusCode === 401) { cookie.value = null; if (import.meta.client) { // Nuxt-кука не всегда удаляется на клиенте с нужным domain — дочищаем вручную document.cookie = `jwtoken=; path=/; domain=${runtimeConfig.public.xDomain}; expires=Thu, 01 Jan 1970 00:00:00 GMT; Secure`; } } else { console.error('Error get profile:', error); } } });