i'm trying to add new value user argument in my request middleware authentication with typescript but, i can't because i used typescript : req:express.Request.
I had tested every topic in this link : enter link description here
All action was bad.
This is my middlewar auth code : This is my problem : request.user = user and i get
TSError: ⨯ Unable to compile TypeScript:
middlewares/isLoggedIn.ts:72:29 - error TS2339: Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'.
72 request.user = user;
~~~~
My middleware code :
export const isLoggedInMiddleware = (request:express.Request, response:express.Response, next:express.NextFunction) => {
const token:string|undefined = request.headers.authorization;
if( !token ){
Logger.error(`Pas de token !`);
return response.status(HttpStatusCode.UNAUTHORISED).json({
error: ` Vous n'êtes pas autorisez à accéder à cette resource !`
});
}
const RSA_KEY_PRIVATE:string|undefined = process.env.RSA_KEY_PRIVATE;
if( !RSA_KEY_PRIVATE ){
throw new APIError(
'INTERNAL SERVER',
HttpStatusCode.INTERNAL_SERVER,
`La key public n'existe pas`,
true
);
}
jsonwebtoken.verify(token, RSA_KEY_PRIVATE.replace('/\\n/g', '\n'), (error, decoded) => {
if(error) {
Logger.error("Token invalid")
return response.status(HttpStatusCode.UNAUTHORISED).json({
error: 'Token invalid'
});
}
const sub:any= decoded?.sub;
try {
userService.getUserById(sub).then( (user:User|null) => {
if(user){
request.user = user;
} else {
Logger.error("Le user n existe pas");
response.status(HttpStatusCode.UNAUTHORISED).json({
error: 'Vous n\'etes pas autorisé'
});
}
})
} catch (error) {
Logger.error("Une erreur rencontré lors de la récuperation du user");
return response.status(HttpStatusCode.UNAUTHORISED).json({
'error':error
});
}
});
next();
}