"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 }); exports.default = reauthUser; const user_auth_1 = __importDefault(require("./user-auth")); const grab_host_names_1 = __importDefault(require("../../utils/grab-host-names")); const login_user_1 = __importDefault(require("./login-user")); /** * # Reauthorize User */ function reauthUser(_a) { return __awaiter(this, arguments, void 0, function* ({ key, database, response, request, level, encryptionKey, encryptionSalt, additionalFields, encryptedUserString, user_id, secureCookie, }) { var _b; /** * Check Encryption Keys * * @description Check Encryption Keys */ const grabedHostNames = (0, grab_host_names_1.default)(); // const { host, port, scheme } = grabedHostNames; // const COOKIE_EXPIRY_DATE = grabCookieExpiryDate(); const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD; const finalEncryptionSalt = encryptionSalt || process.env.DSQL_ENCRYPTION_SALT; const existingUser = (0, user_auth_1.default)({ database, encryptionKey: finalEncryptionKey, encryptionSalt: finalEncryptionSalt, level, request, encryptedUserString, }); if (!((_b = existingUser === null || existingUser === void 0 ? void 0 : existingUser.payload) === null || _b === void 0 ? void 0 : _b.id)) { return { success: false, payload: null, msg: "Cookie Credentials Invalid", }; } return yield (0, login_user_1.default)({ database: database || "", payload: { email: existingUser.payload.email, }, additionalFields, skipPassword: true, response, request, user_id, secureCookie, key, }); /** * Initialize HTTP response variable */ let httpResponse; /** * Check for local DB settings * * @description Look for local db settings in `.env` file and by pass the http request if available */ // const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = // process.env; // if ( // DSQL_DB_HOST?.match(/./) && // DSQL_DB_USERNAME?.match(/./) && // DSQL_DB_PASSWORD?.match(/./) && // DSQL_DB_NAME?.match(/./) && // global.DSQL_USE_LOCAL // ) { // let dbSchema: import("../../types").DSQL_DatabaseSchemaType | undefined; // try { // const localDbSchemaPath = path.resolve( // process.cwd(), // "dsql.schema.json" // ); // dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); // } catch (error) {} // httpResponse = await apiReauthUser({ // existingUser: existingUser.payload, // additionalFields, // }); // } else { // /** // * Make https request // * // * @description make a request to datasquirel.com // */ // httpResponse = (await new Promise((resolve, reject) => { // const reqPayload = JSON.stringify({ // existingUser: existingUser.payload, // database, // additionalFields, // }); // const httpsRequest = scheme.request( // { // method: "POST", // headers: { // "Content-Type": "application/json", // "Content-Length": Buffer.from(reqPayload).length, // Authorization: // key || // process.env.DSQL_FULL_ACCESS_API_KEY || // process.env.DSQL_API_KEY, // }, // port, // hostname: host, // path: `/api/user/${ // user_id || grabedHostNames.user_id // }/reauth-user`, // }, // /** // * Callback Function // * // * @description https request callback // */ // (response) => { // var str = ""; // response.on("data", function (chunk) { // str += chunk; // }); // response.on("end", function () { // resolve(JSON.parse(str)); // }); // response.on("error", (err) => { // reject(err); // }); // } // ); // httpsRequest.write(reqPayload); // httpsRequest.end(); // })) as APILoginFunctionReturn; // } // /** // * Make https request // * // * @description make a request to datasquirel.com // */ // if (httpResponse?.success) { // let encryptedPayload = encrypt({ // data: JSON.stringify(httpResponse.payload), // encryptionKey: finalEncryptionKey, // encryptionSalt: finalEncryptionSalt, // }); // const cookieNames = getAuthCookieNames({ // database, // userId: user_id || grabedHostNames.user_id, // }); // httpResponse["cookieNames"] = cookieNames; // httpResponse["key"] = String(encryptedPayload); // const authKeyName = cookieNames.keyCookieName; // const csrfName = cookieNames.csrfCookieName; // response?.setHeader("Set-Cookie", [ // `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Expires=${COOKIE_EXPIRY_DATE}${ // secureCookie ? ";Secure=true" : "" // }`, // `${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true;Expires=${COOKIE_EXPIRY_DATE}`, // ]); // if (httpResponse.csrf) { // deleteAuthFile(String(existingUser.payload.csrf_k)); // writeAuthFile( // httpResponse.csrf, // JSON.stringify(httpResponse.payload) // ); // } // } // return httpResponse; }); }