Spaces:
Sleeping
Sleeping
| 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; | |
| } | |