Hello
I want to create a new token if a provided one is expired.
For this i use cookieExtractor :
const cookieExtractor = (req: Request) => {
let token = null;
if (req && req.headers && req.headers.authorization) {
token = req.headers.authorization.split(" ")[1];
}
console.log(token)
jwt.verify(
token,
`${process.env.SECRET}`,
{ ignoreExpiration: false, algorithms: ['HS256'] },
(error, decoded) => {
if (error instanceof TokenExpiredError) {
// create new token
}
}
)
return token;
}
And function that creates new token by refresh one:
async function refresh(refreshToken: string) {
if (!refreshToken) {
throw new BadRequestException('refresh token is not valid');
}
const userData = await this.tokenService.validateRefreshToken(refreshToken);
const tokenFromDb = this.tokenService.findToken(refreshToken);
if (!userData && !tokenFromDb) {
throw new UnauthorizedException();
}
const user = await this.userService.findOneById(userData.userId);
console.log(user.toObject({versionKey: false}));
return (await this.tokenService.generateToken(user.toObject({versionKey: false}))).accessToken
}
So the problem is that i can't use tokenService and userService in refresh function because it outside of
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) ...
So how can i reach Services method?