UNPKG

@antelopejs/auth-jwt

Version:

Authentication and authorization module that implements the Auth interface of antelopejs with JWT

41 lines 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JWTHandler = void 0; const jsonwebtoken_1 = require("jsonwebtoken"); const beta_1 = require("@ajs/api/beta"); const promises_1 = require("fs/promises"); class JWTHandler { loadFromDisk = false; signKey; verifyKey; signOptions; verifyOptions; constructor(config) { if (!config.secret && (!config.signKey || !config.verifyKey)) { throw new Error('Invalid JWT config'); } if (!config.secret) { this.loadFromDisk = true; } this.signKey = (config.signKey || config.secret); this.verifyKey = (config.verifyKey || config.secret); this.signOptions = config.signOptions || {}; this.verifyOptions = config.verifyOptions || {}; } async loadKeys() { if (this.loadFromDisk) { this.signKey = await (0, promises_1.readFile)(this.signKey); this.verifyKey = await (0, promises_1.readFile)(this.verifyKey); } } verify(data, options) { return data ? new Promise((resolve, reject) => (0, jsonwebtoken_1.verify)(data, this.verifyKey, { ...this.verifyOptions, ...(options || {}) }, (err, encoded) => err ? reject(new beta_1.HTTPResult(403, `Forbidden (${err.message})`)) : resolve(encoded))) : Promise.reject(new beta_1.HTTPResult(401, 'Unauthorized')); } sign(data, options) { return new Promise((resolve, reject) => (0, jsonwebtoken_1.sign)(data, this.signKey, { ...this.signOptions, ...(options || {}) }, (err, encoded) => err ? reject(err) : resolve(encoded))); } } exports.JWTHandler = JWTHandler; //# sourceMappingURL=jwt.js.map