File size: 897 Bytes
fe9acc7
 
 
 
 
 
 
 
 
 
 
ddd2690
fe9acc7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { NextRequest, NextResponse } from "next/server";

/**
 * Admin authentication middleware for API routes.
 * Uses Bearer token (admin password) for simplicity.
 */

export function verifyAdmin(request: NextRequest): boolean {
  const authHeader = request.headers.get("authorization");
  if (!authHeader?.startsWith("Bearer ")) return false;
  const token = authHeader.replace("Bearer ", "");
  const adminPassword = process.env.ADMIN_PASSWORD || "ia-admin-2025";
  return token === adminPassword;
}

/**
 * Returns a 401 response if not admin, null if authorized.
 * Usage: const denied = requireAdmin(request); if (denied) return denied;
 */
export function requireAdmin(request: NextRequest): NextResponse | null {
  if (!verifyAdmin(request)) {
    return NextResponse.json(
      { error: "Non autorisé — connexion admin requise" },
      { status: 401 }
    );
  }
  return null;
}