UNPKG

alapa

Version:

A cutting-edge web development framework designed to revolutionize the way developers build modern web applications.

50 lines (49 loc) 1.61 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.JoseJWT = void 0; const node_jose_1 = __importDefault(require("node-jose")); const abstract_1 = require("./abstract"); class JoseJWT { secret; error; constructor(secret) { this.secret = secret; } generateKey() { const keystore = node_jose_1.default.JWK.createKeyStore(); // const props = { // kid: 'gBdaS-G8RLax2qgObTD94w', // alg: 'A256GCM', // use: 'enc' // }; return keystore.add(this.secret); } async generateToken(payload, expiresAt) { const key = await this.generateKey(); const expires = (0, abstract_1.generateJWTExpiresDate)(expiresAt); const result = await node_jose_1.default.JWS.createSign({ format: "compact", alg: "HS256" }, key) .update(JSON.stringify(payload)) .final(); const token = result.signResult.toString(); return { success: true, token, expiresAt: expires.date, }; } async verifyToken(token) { const key = await this.generateKey(); try { const result = await node_jose_1.default.JWS.createVerify(key).verify(token); return JSON.parse(result.payload.toString()); } catch (error) { this.error = error; return false; } } } exports.JoseJWT = JoseJWT;