Hi, i have an issue with adding auth middleware and its types. Could someone explain what am I doing wrong? Screenshots attached
#auth type issue
3 messages · Page 1 of 1 (latest)
``
passport.ts
import passport from "passport";
import {Request, Response, NextFunction} from "express";
import {IUser} from '../models/user';
interface AuthenticatedRequest extends Request {
user?: IUser;
}
const auth = (req: AuthenticatedRequest, res: Response, next: NextFunction): void => {
passport.authenticate('jwt', {session: false}, (err: any, user: IUser) => {
const authHeader = req.header('authorization');
const token = authHeader ? authHeader.split(' ')[1] : null;
if (err) {
return next(err);
}
if (!user || !token || user.token !== token) {
return res.status(401).json({
status: 'error',
code: 401,
message: 'Unauthorized',
});
}
req.user = user;
next();
})(req, res, next);
};
export default auth;
``
``
userRoutes.ts (just the example route with issue)
router.get('/', auth, async (req: AuthenticatedRequest, res: Response, next: NextFunction): Promise<void> => {
try {
const user = req.user;
res.json({
status: 'Success',
code: STATUS_CODE.OK,
data: user,
});
} catch (err) {
next(err);
}
});``