@forzalabs/remora
Version:
A powerful CLI tool for seamless data translation.
57 lines (56 loc) • 3.05 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
const Affirm_1 = __importDefault(require("../core/Affirm"));
//
class JWTManagerClass {
constructor() {
// ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!!⚠️ ATTENTION!!
// ATTENTION!! The remoteSecretKey is saved in CLEAR text because we are studying a way to not make it visible to the customer. ATTENTION!!
// ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!! ⚠️ ATTENTION!!⚠️ ATTENTION!!
this.remoraSecretKey = 'violetevergardenisaworkofart';
this.issue = (secret, payload, expirationHours) => {
return jsonwebtoken_1.default.sign(payload, secret, { expiresIn: `${expirationHours}h` });
};
this.sign = (apiKeyId, name, scopes) => {
(0, Affirm_1.default)(apiKeyId, 'Invalid api key id');
(0, Affirm_1.default)(name, 'Invalid name');
(0, Affirm_1.default)(scopes, 'Invalid scopes');
const JWT_SECRET = process.env.JWT_SECRET;
const INSTALLATION_ID = process.env.INSTALLATION_ID;
(0, Affirm_1.default)(JWT_SECRET, 'Invalid JWT SECRET');
(0, Affirm_1.default)(INSTALLATION_ID, 'Invalid INSTALLATION ID');
const payload = {
apiKeyId: apiKeyId,
installationId: INSTALLATION_ID,
name: name,
scopes: scopes
};
return jsonwebtoken_1.default.sign(payload, JWT_SECRET, { expiresIn: '365000d' });
};
this.verify = (token) => {
(0, Affirm_1.default)(token, 'Invalid token');
const JWT_SECRET = process.env.JWT_SECRET;
(0, Affirm_1.default)(JWT_SECRET, 'Invalid JWT SECRET');
return jsonwebtoken_1.default.verify(token, JWT_SECRET);
};
this.verifyAdmin = (token) => {
(0, Affirm_1.default)(token, 'Invalid token');
const ADMIN_JWT_SECRET = process.env.ADMIN_JWT_SECRET;
(0, Affirm_1.default)(ADMIN_JWT_SECRET, 'Invalid ADMIN JWT SECRET');
return jsonwebtoken_1.default.verify(token, ADMIN_JWT_SECRET);
};
this.verifyCLI = (token) => {
(0, Affirm_1.default)(token, 'Invalid token');
// ⚠️ ATTENTION!! The remoteSecretKey is saved in clear text because we are studying a way to not make it visible to the customer. ATTENTION!!
const REMORA_KEY_SECRET = process.env.REMORA_KEY_SECRET;
(0, Affirm_1.default)(REMORA_KEY_SECRET, 'Invalid CLI JWT SECRET');
return jsonwebtoken_1.default.verify(token, REMORA_KEY_SECRET);
};
}
}
const JWTManager = new JWTManagerClass();
exports.default = JWTManager;