Files
2026-06-03 04:11:30 +03:00

45 lines
1.2 KiB
TypeScript

import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
const locales = ['tr', 'en']
const defaultLocale = 'tr'
export function proxy(request: NextRequest) {
const { pathname } = request.nextUrl
// Admin Auth Logic
if (pathname.startsWith('/admin')) {
const session = request.cookies.get('admin_session')?.value
const secret = process.env.ADMIN_SECRET || 'secret'
const isLoginPage = pathname === '/admin/login'
if (!session || session !== secret) {
if (!isLoginPage) {
return NextResponse.redirect(new URL('/admin/login', request.url))
}
} else {
if (isLoginPage) {
return NextResponse.redirect(new URL('/admin', request.url))
}
}
return NextResponse.next()
}
// Locale Logic
const hasLocale = locales.some(
(locale) => pathname === `/${locale}` || pathname.startsWith(`/${locale}/`)
)
if (!hasLocale) {
request.nextUrl.pathname = `/${defaultLocale}${pathname}`
return NextResponse.redirect(request.nextUrl)
}
return NextResponse.next()
}
export const config = {
matcher: ['/((?!_next|favicon.ico|icons|manifest.webmanifest).*)'],
}