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
JavaScript
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;
;