datasquirel/dist/package-shared/actions/users/logout-user.js
Benjamin Toby 8b3553fcd5 Updates
2025-02-13 08:18:46 +01:00

92 lines
3.5 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = logoutUser;
const get_auth_cookie_names_1 = __importDefault(require("../../functions/backend/cookies/get-auth-cookie-names"));
const decrypt_1 = __importDefault(require("../../functions/dsql/decrypt"));
const ejson_1 = __importDefault(require("../../utils/ejson"));
const write_auth_files_1 = require("../../functions/backend/auth/write-auth-files");
const parseCookies_1 = __importDefault(require("../../utils/backend/parseCookies"));
const grab_host_names_1 = __importDefault(require("../../utils/grab-host-names"));
const debug_log_1 = __importDefault(require("../../utils/logging/debug-log"));
/**
* # Logout user
*/
function logoutUser({ response, database, dsqlUserId, encryptedUserString, request, cookieString, debug, }) {
/**
* Check Encryption Keys
*
* @description Check Encryption Keys
*/
try {
const { user_id } = (0, grab_host_names_1.default)({ userId: dsqlUserId });
const cookieNames = (0, get_auth_cookie_names_1.default)({
database,
userId: user_id,
});
function debugFn(log, label) {
(0, debug_log_1.default)({ log, addTime: true, title: "logoutUser", label });
}
if (debug) {
debugFn(cookieNames, "cookieNames");
}
const authKeyName = cookieNames.keyCookieName;
const csrfName = cookieNames.csrfCookieName;
const oneTimeCodeName = cookieNames.oneTimeCodeName;
const decryptedUserJSON = (() => {
try {
if (request) {
const cookiesObject = (0, parseCookies_1.default)({
request,
cookieString,
});
return (0, decrypt_1.default)({
encryptedString: cookiesObject[authKeyName],
});
}
else if (encryptedUserString) {
return (0, decrypt_1.default)({
encryptedString: encryptedUserString,
});
}
else {
return undefined;
}
}
catch ( /** @type {any} */error) {
console.log("Error getting decrypted User JSON to logout:", error.message);
return undefined;
}
})();
if (debug) {
debugFn(decryptedUserJSON, "decryptedUserJSON");
}
if (!decryptedUserJSON)
throw new Error("Invalid User");
const userObject = ejson_1.default.parse(decryptedUserJSON);
if (!(userObject === null || userObject === void 0 ? void 0 : userObject.csrf_k))
throw new Error("Invalid User. Please check key");
response === null || response === void 0 ? void 0 : response.setHeader("Set-Cookie", [
`${authKeyName}=null;max-age=0`,
`${csrfName}=null;max-age=0`,
`${oneTimeCodeName}=null;max-age=0`,
]);
const csrf = userObject.csrf_k;
(0, write_auth_files_1.deleteAuthFile)(csrf);
return {
success: true,
msg: "User Logged Out",
cookieNames,
};
}
catch (error) {
console.log("Logout Error:", error.message);
return {
success: false,
msg: "Logout Failed",
};
}
}