diff --git a/src/middleware.ts b/src/middleware.ts index c0106cfab..7bcfe2611 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -2,19 +2,27 @@ import { NextFetchEvent, NextRequest, NextResponse } from 'next/server'; // eslint-disable-next-line consistent-return export function middleware(req: NextRequest, ev: NextFetchEvent) { - const isCorrectPassword = req.cookies.get('password')?.value === process.env.PASSWORD; + const { cookies } = req; + const passwordCookie = cookies.get('password')?.value; + const isCorrectPassword = passwordCookie?.toString() === process.env.PASSWORD; const url = req.nextUrl.clone(); - const skipURL = - url.pathname && - (url.pathname.includes('login') || - url.pathname === '/api/configs/tryPassword' || - (url.pathname.includes('/_next/') && !url.pathname.includes('/pages/')) || - url.pathname === '/favicon.ico' || - url.pathname === '/404' || - url.pathname === '/migrate' || - url.pathname.includes('pages/_app')); - if (!skipURL && !isCorrectPassword && process.env.PASSWORD) { + // Skip the middleware if the URL is 'login', 'api/configs/tryPassword', '_next/*', 'favicon.ico', '404', 'migrate' or 'pages/_app' + const skippedUrls = [ + '/login', + '/api/configs/tryPassword', + '/_next/', + '/favicon.ico', + '/404', + '/migrate', + '/pages/_app', + ]; + if (skippedUrls.some((skippedUrl) => url.pathname.startsWith(skippedUrl))) { + return NextResponse.next(); + } + // If the password is not correct, redirect to the login page + if (!isCorrectPassword && process.env.PASSWORD) { url.pathname = '/login'; return NextResponse.rewrite(url); } + return NextResponse.next(); }