Compare commits
2 Commits
cc11e80e78
...
98f762d31e
Author | SHA1 | Date |
---|---|---|
|
98f762d31e | |
|
2b64b98d1d |
|
@ -1,9 +1,10 @@
|
||||||
|
"use server"
|
||||||
import prisma from 'app/lib/db';
|
import prisma from 'app/lib/db';
|
||||||
import { jwtVerify, JWTPayload, decodeJwt } from 'jose';
|
import { jwtVerify, JWTPayload, decodeJwt } from 'jose';
|
||||||
import { cookies } from 'next/headers';
|
import { cookies } from 'next/headers';
|
||||||
|
|
||||||
|
|
||||||
export function getJWTSecretKey() {
|
export async function getJWTSecretKey() {
|
||||||
const secret = process.env.JWT_SECRET
|
const secret = process.env.JWT_SECRET
|
||||||
if (!secret) throw new Error("There is no JWT secret key")
|
if (!secret) throw new Error("There is no JWT secret key")
|
||||||
return new TextEncoder().encode(secret)
|
return new TextEncoder().encode(secret)
|
||||||
|
@ -64,7 +65,7 @@ export async function logout() {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setUserDataCookie(userData) {
|
export async function setUserDataCookie(userData) {
|
||||||
const cookieStore = cookies();
|
const cookieStore = cookies();
|
||||||
cookieStore.set({
|
cookieStore.set({
|
||||||
name: 'userData',
|
name: 'userData',
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue