41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { withAuth } from "next-auth/middleware";
|
|
|
|
import { UserRole } from "@prisma/client";
|
|
|
|
// More on how NextAuth.js middleware works: https://next-auth.js.org/configuration/nextjs#middleware
|
|
export default withAuth({
|
|
callbacks: {
|
|
authorized({ req, token }) {
|
|
console.log("req", req);
|
|
// `/admin` requires admin role
|
|
if (req.nextUrl.pathname === "/examples/admin") {
|
|
return token?.userRole === "adminer"
|
|
}
|
|
|
|
if (req.nextUrl.pathname === "/cart" && token?.role === UserRole.ADMIN) {
|
|
// return NextResponse.redirect(new URL("/", req.url));
|
|
return true;
|
|
}
|
|
// if(req.nextUrl.pathname === "/cart"){
|
|
// return token?.role !== Role.ADMIN;
|
|
// }
|
|
|
|
|
|
// `/me` only requires the user to be logged in
|
|
return !!token
|
|
},
|
|
},
|
|
})
|
|
|
|
export const config = {
|
|
// matcher: ["/admin", "/me"]
|
|
matcher: ["/admin/:path*", "/me", "/cart, /"],
|
|
// callbackUrl: {
|
|
// name: `__Secure-next-auth.callback-url`,
|
|
// options: {
|
|
// sameSite: 'lax',
|
|
// path: '/',
|
|
// secure: true
|
|
// }
|
|
// },
|
|
} |