92 lines
3.5 KiB
JavaScript
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",
|
|
};
|
|
}
|
|
}
|