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