import {JwtService} from "@nestjs/jwt"; import {Inject, Injectable} from "@nestjs/common"; @Injectable() export class JwtTokenService { @Inject() private readonly jwtService: JwtService; secret: string; expiresIn: string; constructor( secret: string, expiresIn: string, ) { this.secret = secret ? secret : 'Please_I_Have_Family'; this.expiresIn = expiresIn ? expiresIn : '1m'; } async generate(payload: any,): Promise { return this.jwtService.sign(payload, {secret: this.secret, expiresIn: this.expiresIn}); } async decode(token: string): Promise { return this.jwtService.decode(token); } async verify(token: string): Promise { return this.jwtService.verify(token, {secret: this.secret}); } async generateFromToken(token) { const payload = await this.jwtService.decode(token); delete payload['exp']; delete payload['iat']; return this.jwtService.sign(payload, { secret: this.secret, expiresIn: this.expiresIn }); } }