make translate for login, register pages
This commit is contained in:
+46
-12
@@ -1,27 +1,61 @@
|
||||
import { NextResponse, NextRequest } from 'next/server';
|
||||
import { cookies } from 'next/headers'
|
||||
import { decrypt } from '@/app/actions/session';
|
||||
import createIntlMiddleware from 'next-intl/middleware'
|
||||
import { routing } from '@/i18n/routing'
|
||||
|
||||
const protectedRoutes = ['/pages']
|
||||
const publicRoutes = ['/login', '/register', '/']
|
||||
const protectedRoutes = ['/pages'];
|
||||
const publicRoutes = ['/login', '/register', '/'];
|
||||
const intlMiddleware = createIntlMiddleware(routing);
|
||||
|
||||
export default async function proxy(request: NextRequest) {
|
||||
const path = request.nextUrl.pathname;
|
||||
const isProtectedRoute = protectedRoutes.includes(path.slice(0, 6));
|
||||
const isPublicRoute = publicRoutes.includes(path);
|
||||
|
||||
const cookie = (await cookies()).get('session')?.value;
|
||||
const session = await decrypt(cookie);
|
||||
|
||||
if (isProtectedRoute && !session?.token) {
|
||||
return NextResponse.redirect(new URL('/login', request.nextUrl));
|
||||
if (
|
||||
path.startsWith('/_next') ||
|
||||
path.includes('/api/') ||
|
||||
path.includes('.')
|
||||
) {
|
||||
return NextResponse.next()
|
||||
}
|
||||
|
||||
if (path === '/') {
|
||||
return NextResponse.redirect(new URL('/pages/dashboard', request.nextUrl));
|
||||
const intlResponse = intlMiddleware(request);
|
||||
|
||||
if (intlResponse) {
|
||||
const localizedPath = intlResponse.headers.get('x-middleware-request') ||
|
||||
intlResponse.headers.get('x-middleware-next') ||
|
||||
path
|
||||
|
||||
const isProtectedRoute = protectedRoutes.some(route =>
|
||||
localizedPath.includes(route) ||
|
||||
path.includes(route)
|
||||
)
|
||||
|
||||
const isPublicRoute = publicRoutes.some(route =>
|
||||
localizedPath === `/${request.nextUrl.locale}${route}` ||
|
||||
localizedPath === route
|
||||
)
|
||||
|
||||
|
||||
const cookie = (await cookies()).get('session')?.value;
|
||||
const session = await decrypt(cookie);
|
||||
|
||||
if (isProtectedRoute && !session?.token) {
|
||||
const loginUrl = new URL('/login', request.nextUrl)
|
||||
loginUrl.searchParams.set('locale', request.nextUrl.locale || 'ru')
|
||||
return NextResponse.redirect(loginUrl)
|
||||
}
|
||||
|
||||
if (path === '/en' || path === '/ru' || localizedPath === `/${request.nextUrl.locale}`) {
|
||||
const dashboardUrl = new URL('/pages/dashboard', request.nextUrl)
|
||||
dashboardUrl.searchParams.set('locale', request.nextUrl.locale || 'ru')
|
||||
return NextResponse.redirect(dashboardUrl)
|
||||
}
|
||||
|
||||
return intlResponse
|
||||
}
|
||||
|
||||
return NextResponse.next();
|
||||
return NextResponse.next();
|
||||
}
|
||||
|
||||
export const config = {
|
||||
|
||||
Reference in New Issue
Block a user