betagouv/service-national-universel

View on GitHub
api/src/middlewares/authMiddleware.ts

Summary

Maintainability
A
0 mins
Test Coverage
import passport from "passport";
import { Request, Response, NextFunction } from "express";
import { logger } from "../logger";
export const authMiddleware = (strategy: string) => (req: Request, res: Response, next: NextFunction) => {
  if (isPublicRoute(req.path)) {
    //@ts-expect-error ipInfo does not exist
    logger.info(`Acessing public route: ${req.originalUrl} - ip: ${req.ipInfo}`);
    return next();
  }
  return passport.authenticate(strategy, { session: false, failWithError: true })(req, res, next);
};

export function isPublicRoute(path: string): boolean {
  const publicRoutes = ["/public"];
  return publicRoutes.some((route) => path.startsWith(route));
}