/
viktorphp
/
front-socket
Обзор
Документация
Войти
/
viktorphp
/
front-socket
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/middleware.ts
73 строки
2 KB
Иванов Виктор Евгеньевич
[feature-diadry]: добавить страницу дневника
11 апр 2026, 16:02
11 апр 2026, 16:02
e2d184b
Код
Авторство
О чём код?
import { NextRequest, NextResponse } from 'next/server'; import { authServices } from '@features/auth'; import { EAppRoutes, publicRoutes } from '@shared/config'; // TODO: Добавить очистку куки при первоначальной загрузке export const middleware = async ( req: NextRequest ): Promise<NextResponse | undefined> => { console.log('🔍 Middleware Debug Info:'); console.log('NEXT_PUBLIC_API_URL:', process.env.NEXT_PUBLIC_API_URL); console.log( 'NEXT_PUBLIC_REACT_APP_SOCKET_URL:', process.env.NEXT_PUBLIC_REACT_APP_SOCKET_URL ); const pathname = req.nextUrl.pathname; // Проверяем, является ли маршрут публичным if (publicRoutes.includes(pathname as EAppRoutes)) { console.log('Public route, allowing access:', pathname); return NextResponse.next(); } try { const cookies = req.cookies.getAll(); if (cookies.length === 0) { console.log('No cookies, redirecting to login'); return NextResponse.redirect(new URL('/login', req.url)); } console.log('cookie: ', JSON.stringify(cookies)); const cookieHeader = cookies .map((cookie) => `${cookie.name}=${encodeURIComponent(cookie.value)}`) .join('; '); console.log('cookie_header', cookieHeader); const user = await authServices.checkSession({ headers: { cookie: cookieHeader, }, }); const sessionCookie = req.cookies.get('sessionId'); const sessionId = sessionCookie?.value; // Убираем поле avatar из объекта user const { avatar, ...userWithoutAvatar } = user; const nextResponse = NextResponse.next(); nextResponse.cookies.set( 'auth_user', JSON.stringify({ ...userWithoutAvatar, sessionId }) ); return nextResponse; } catch (error) { console.error('Auth middleware error:', error); const response = NextResponse.next(); response.cookies.set('auth_error', JSON.stringify(error)); return NextResponse.redirect(new URL('/login', req.url)); } }; export const config = { matcher: ['/profile', '/', '/chats', '/diary', '/diary/:path*'], };