middleware.js 760 B

1234567891011121314151617181920212223242526272829
  1. import { NextResponse } from "next/server";
  2. import { verifyToken } from "./lib/auth";
  3. export async function middleware(request) {
  4. const path = request.nextUrl.pathname;
  5. if (path.startsWith("/api/admin")) {
  6. const token = request.cookies.get("token")?.value;
  7. if (!token) {
  8. return NextResponse.json({ error: "Not authenticated" }, { status: 401 });
  9. }
  10. try {
  11. const decoded = await verifyToken(token);
  12. if (decoded.role !== "admin") {
  13. return NextResponse.json({ error: "Not authorized" }, { status: 403 });
  14. }
  15. } catch (error) {
  16. return NextResponse.json({ error: "Invalid token" }, { status: 401 });
  17. }
  18. }
  19. return NextResponse.next();
  20. }
  21. export const config = {
  22. matcher: "/api/admin/:path*",
  23. };