All files / src/middleware auth.ts

0% Statements 0/18
0% Branches 0/11
0% Functions 0/3
0% Lines 0/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                                                                                             
import { Request, Response, NextFunction } from 'express';
import { authTokens } from '../utils/auth-tokens';
 
// IdNot Authentication Middleware
export const authenticateIdNot = (req: Request, res: Response, next: NextFunction): any => {
  const authToken = req.headers['authorization']?.replace('Bearer ', '') || req.headers['x-auth-token'] as string || req.body.authToken;
  
  if (!authToken) {
    return res.status(401).json({
      success: false,
      message: 'Token d\'authentification requis'
    });
  }
 
  // Find the user by auth token
  const userAuth = authTokens.find(auth => auth.authToken === authToken);
  
  if (!userAuth) {
    return res.status(401).json({
      success: false,
      message: 'Token d\'authentification invalide'
    });
  }
 
  // Check if token has expired
  if (Date.now() > userAuth.expiresAt) {
    // Remove expired token
    const tokenIndex = authTokens.findIndex(auth => auth.authToken === authToken);
    if (tokenIndex > -1) {
      authTokens.splice(tokenIndex, 1);
    }
    
    return res.status(401).json({
      success: false,
      message: 'Token d\'authentification expiré'
    });
  }
 
  // Add user info to request
  req.idNotUser = {
    idNot: userAuth.idNot,
    authToken: userAuth.authToken
  };
  
  next();
};