IAacademyTraining / src /lib /admin-auth.ts
MAALOUFimad02's picture
Upload 72 files
ddd2690 verified
Raw
History Blame Contribute Delete
897 Bytes
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;
}