This commit is contained in:
andrzej 2024-09-13 21:51:03 +02:00
parent f9f2a8352d
commit 8dc7d08210
1 changed files with 7 additions and 4 deletions

View File

@ -1,3 +1,4 @@
"use server"
import { NextRequest, NextResponse } from "next/server"; import { NextRequest, NextResponse } from "next/server";
import { verifyJwt } from "app/api/auth/actions"; import { verifyJwt } from "app/api/auth/actions";
@ -13,7 +14,9 @@ function matchesWildcard(path: string, pattern: string): boolean {
} }
export default async function(request: NextRequest) { export default async function(request: NextRequest) {
const LOGIN = `${process.env.NEXT_PUBLIC_BASE_URL}/login?redirect=${request.nextUrl.pathname + request.nextUrl.search}` // const url = `${process.env.NEXT_PUBLIC_BASE_URL}/login?redirect=${request.nextUrl.pathname + request.nextUrl.search}`
const url = request.nextUrl.clone()
url.pathname = "/login"
if (protectedRoutes.some(pattern => matchesWildcard(request.nextUrl.pathname, pattern))) { if (protectedRoutes.some(pattern => matchesWildcard(request.nextUrl.pathname, pattern))) {
const token = request.cookies.get('token') const token = request.cookies.get('token')
@ -21,7 +24,7 @@ export default async function(request: NextRequest) {
//NOTE - may need to add logic to return 401 for api routes //NOTE - may need to add logic to return 401 for api routes
if (!token) { if (!token) {
return NextResponse.redirect(LOGIN) return NextResponse.redirect(url)
} }
try { try {
@ -31,12 +34,12 @@ export default async function(request: NextRequest) {
if (!jwtIsVerified) { if (!jwtIsVerified) {
//delete token //delete token
request.cookies.delete('token') request.cookies.delete('token')
return NextResponse.redirect(LOGIN) return NextResponse.redirect(url)
} }
} catch { } catch {
//delete token (failsafe) //delete token (failsafe)
request.cookies.delete('token') request.cookies.delete('token')
return NextResponse.redirect(LOGIN) return NextResponse.redirect(url)
} }
//redirect from login if already logged in //redirect from login if already logged in