UNPKG

@jvhaile/loopback4-helper

Version:
56 lines (48 loc) 1.6 kB
import {BindingScope, inject, injectable} from '@loopback/core'; import {HttpErrors} from '@loopback/rest'; import {promisify} from 'util'; import {JWTBindings} from "../keys"; const jwt = require('jsonwebtoken'); const signAsync = promisify(jwt.sign); const verifyAsync = promisify(jwt.verify); @injectable({scope: BindingScope.SINGLETON}) export class JWTService { constructor( @inject(JWTBindings.TOKEN_SECRET) private jwtSecret: string, @inject(JWTBindings.TOKEN_EXPIRES_IN) private jwtExpiresIn: string, ) { } async verifyToken(token: string): Promise<any> { if (!token) { throw new HttpErrors.Unauthorized( `Error verifying token : 'token' is null`, ); } try { return await verifyAsync(token, this.jwtSecret); } catch (error) { throw new HttpErrors.Unauthorized( `Error verifying token : ${error.message}`, ); } } async generateToken(object: any): Promise<string> { if (!object) { throw new HttpErrors.Unauthorized( 'Error generating token : userProfile is null', ); } let token: string; try { token = await signAsync(object, this.jwtSecret, { expiresIn: Number(this.jwtExpiresIn), }); } catch (error) { console.log("CREATE TOKEN ERROR",error); throw new HttpErrors.Unauthorized(`Error encoding token : ${error}`); } return token; } }