UNPKG

axiodb

Version:

The Pure JavaScript Alternative to SQLite. Embedded NoSQL database for Node.js with MongoDB-style queries, zero native dependencies, built-in InMemoryCache, and web GUI. Perfect for desktop apps, CLI tools, and embedded systems. No compilation, no platfor

82 lines 4.12 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable @typescript-eslint/no-explicit-any */ const outers_1 = require("outers"); const responseBuilder_helper_1 = __importDefault(require("../../helper/responseBuilder.helper")); const keys_1 = require("../../config/keys"); /** * Controller class for handling key generation and verification operations. * * This class provides functionality for generating session keys using JWT (JSON Web Token) * and verifying those keys for authentication purposes. * * @class KeyController */ class KeyController { constructor(Generationkey) { this.Generationkey = Generationkey; } /** * Generates a session key using JWT for authentication purposes. * * This method creates a new JWT token with default server key parameters * including issuer, reason, audience, expiration time, and timestamp. * The token is encrypted using the specified rounds of encryption. * * @returns {Promise<string | any>} A promise that resolves to a response object containing * the generated session key or an error object in case of failure. * The response includes status code, message, and the originSessionKey. * * @example * const keyController = new KeyController(); * const response = await keyController.generateKey(); * // response = { statusCode: 200, message: "Key Generated Successfully", data: { originSessionKey: "jwt-token" } } */ generateKey() { return __awaiter(this, void 0, void 0, function* () { const originSessionKey = new outers_1.ClassBased.JWT_Manager(this.Generationkey).generate({ issuer: keys_1.ServerKeys.DEFAULT_KEY_ISSUER, Reason: keys_1.ServerKeys.DEFAULT_KEY_REASON, audience: keys_1.ServerKeys.DEFAULT_KEY_AUDIENCE, expiringIn: keys_1.ServerKeys.DEFAULT_KEY_EXPIRE, Timestamp: keys_1.ServerKeys.DEFAULT_KEY_TIMESTAMP, }, keys_1.ServerKeys.DEFAULT_KEY_EXPIRE).toKen; return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.OK, "Key Generated Successfully", { originSessionKey, expiresIn: keys_1.ServerKeys.DEFAULT_KEY_TIMESTAMP, expiryTime: keys_1.ServerKeys.DEFAULT_KEY_EXPIRE, }); }); } /** * Verifies the provided API key. * * @param {string} key - The API key to verify * @returns {Promise<string | any>} A response object containing status code and message * - If key is valid: Status 200 with success message * - If key is invalid: Status 401 with error message */ verifyKey(key) { return __awaiter(this, void 0, void 0, function* () { const isValid = new outers_1.ClassBased.JWT_Manager(this.Generationkey).decode(key); if (!isValid || isValid.status == "Invalid") { return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.UNAUTHORIZED, "Invalid Key", null); } return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.OK, "Key Verified Successfully", null); }); } } exports.default = KeyController; //# sourceMappingURL=key.controller.js.map