datasquirel/dist/package-shared/functions/backend/api-cred.js
Benjamin Toby a3561da53d Updates
2025-01-10 20:35:05 +01:00

51 lines
2.0 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const decrypt_1 = __importDefault(require("../dsql/decrypt"));
/**
* # Grap API Credentials
*/
const grabApiCred = ({ key, database, table, user_id, media, }) => {
var _a, _b;
if (!key)
return null;
if (!user_id)
return null;
try {
const allowedKeysPath = process.env.DSQL_API_KEYS_PATH;
if (!allowedKeysPath)
throw new Error("process.env.DSQL_API_KEYS_PATH variable not found");
const ApiJSON = (0, decrypt_1.default)({ encryptedString: key });
/** @type {import("../../types").ApiKeyObject} */
const ApiObject = JSON.parse(ApiJSON || "");
const isApiKeyValid = fs_1.default.existsSync(`${allowedKeysPath}/${ApiObject.sign}`);
if (String(ApiObject.user_id) !== String(user_id))
return null;
if (!isApiKeyValid)
return null;
if (!ApiObject.target_database)
return ApiObject;
if (media)
return ApiObject;
if (!database && ApiObject.target_database)
return null;
const isDatabaseAllowed = (_a = ApiObject.target_database) === null || _a === void 0 ? void 0 : _a.split(",").includes(String(database));
if (isDatabaseAllowed && !ApiObject.target_table)
return ApiObject;
if (isDatabaseAllowed && !table && ApiObject.target_table)
return null;
const isTableAllowed = (_b = ApiObject.target_table) === null || _b === void 0 ? void 0 : _b.split(",").includes(String(table));
if (isTableAllowed)
return ApiObject;
return null;
}
catch ( /** @type {any} */error) {
console.log(`api-cred ERROR: ${error.message}`);
return { error: `api-cred ERROR: ${error.message}` };
}
};
exports.default = grabApiCred;