﻿import { Request, Response, NextFunction } from 'express';

function getBearerToken(req: Request): string {
  const auth = req.headers.authorization || '';
  if (auth.startsWith('Bearer ')) return auth.slice(7).trim();
  const serviceToken = req.headers['x-service-token'];
  return typeof serviceToken === 'string' ? serviceToken.trim() : '';
}

export const serviceAuth = (req: Request, res: Response, next: NextFunction): void => {
  const expectedToken = process.env.CSM_SERVICE_TOKEN || process.env.CSM_PROJECT_SYNC_TOKEN || '';
  const token = getBearerToken(req);

  if (!expectedToken) {
    res.status(503).json({ success: false, message: 'CSM service token is not configured' });
    return;
  }

  if (!token || token !== expectedToken) {
    res.status(401).json({ success: false, message: 'Invalid service token' });
    return;
  }

  next();
};
