How to get change request in nestjs middleware?

1.9k Views Asked by At

I am trying to integrate passport in NestJS and to get current auth info anywhere using a decorator. My NestJs version was so old, I updated the NestJS version and changed to the code below. After I changed middleware code, I can no longer get current auth info.

How to get auth info using the changed middeware?

Code before changing the middleware:

 export class authMiddlware implements NestMiddleware {
  async resolve(): Promise<MiddlewareFunction> {
    return async (req, res, next) => {
      passport.authenticate('jwt', { session: false }, (err, user, info) => {

        if (err) {
          return next(err);
        }

        if (user) {
          req.user = user;
        }

        return next();
      })(req, res, next);
    };
  }

After changing the middleware: In passport.authenticate I can get the changed user from the request, but out of passport, I cannot get the user from the request.


 @Injectable()
 export class authMiddlware implements NestMiddleware {
   use(req: Request, res: Response, next: Function) {
      passport.authenticate('jwt', { session: false }, (err, user, info) => {

        if (err) {
          return next(err);
        }

        if (user) {
          req.user = user;
        }

        console.log(req.user)

        next();
      })(req, res, next);

      console.log(req.user)
    };
  }

The user.decorator:

export const passUser= createParamDecorator((data, req) => {
  return plainToClass(User, req.user);
});

0

There are 0 best solutions below