#auth type issue

3 messages · Page 1 of 1 (latest)

vivid bobcat
#

Hi, i have an issue with adding auth middleware and its types. Could someone explain what am I doing wrong? Screenshots attached

#

``
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);
}
});``