feat(auth): add better-auth core wiring for admin and db
This commit is contained in:
@@ -1,18 +1,27 @@
|
||||
import { type NextRequest, NextResponse } from "next/server"
|
||||
|
||||
import { canAccessRoute, getRequiredPermission, resolveRoleFromRequest } from "@/lib/access"
|
||||
import {
|
||||
canAccessRoute,
|
||||
getRequiredPermission,
|
||||
isPublicRoute,
|
||||
resolveRoleFromRequest,
|
||||
} from "@/lib/access"
|
||||
|
||||
export function middleware(request: NextRequest) {
|
||||
const { pathname } = request.nextUrl
|
||||
|
||||
if (isPublicRoute(pathname)) {
|
||||
return NextResponse.next()
|
||||
}
|
||||
|
||||
const role = resolveRoleFromRequest(request)
|
||||
|
||||
if (!role) {
|
||||
const unauthorizedUrl = request.nextUrl.clone()
|
||||
unauthorizedUrl.pathname = "/unauthorized"
|
||||
unauthorizedUrl.searchParams.set("reason", "missing-role")
|
||||
const loginUrl = request.nextUrl.clone()
|
||||
loginUrl.pathname = "/login"
|
||||
loginUrl.searchParams.set("next", pathname)
|
||||
|
||||
return NextResponse.redirect(unauthorizedUrl)
|
||||
return NextResponse.redirect(loginUrl)
|
||||
}
|
||||
|
||||
if (!canAccessRoute(role, pathname)) {
|
||||
|
||||
Reference in New Issue
Block a user