47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
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();
|
|
};
|