← back to Dw Boardroom V2
src/api/middleware/auth.ts
27 lines
// ═══════════════════════════════════════════════
// DW Boardroom V2 — Basic Auth Middleware
// ═══════════════════════════════════════════════
import type { Request, Response, NextFunction } from 'express';
const AUTH_USER = process.env.AUTH_USER || 'admin';
const AUTH_PASS = process.env.BOARDROOM_AUTH_PASS || process.env.AUTH_PASS;
if (!AUTH_PASS) throw new Error('BOARDROOM_AUTH_PASS not set — route via /secrets');
export function basicAuth(req: Request, res: Response, next: NextFunction): void {
const authHeader = req.headers.authorization;
if (!authHeader || !authHeader.startsWith('Basic ')) {
res.status(401).json({ error: 'Authentication required' });
return;
}
const decoded = Buffer.from(authHeader.slice(6), 'base64').toString();
const [user, pass] = decoded.split(':');
if (user === AUTH_USER && pass === AUTH_PASS) {
next();
} else {
res.status(401).json({ error: 'Invalid credentials' });
}
}