This commit is contained in:
Benjamin Toby
2025-01-14 08:41:57 +01:00
parent 285d3b8369
commit 7551749784
9 changed files with 45 additions and 39 deletions
+1 -2
View File
@@ -16,7 +16,6 @@ type Param = {
dsqlUserId?: string | number;
expiry?: number;
csrfHeaderName?: string;
csrfHeaderIsValue?: boolean;
};
/**
* Authenticate User from request
@@ -24,5 +23,5 @@ type Param = {
* @description This Function takes in a request object and returns a user object
* with the user's data
*/
export default function userAuth({ request, req, encryptionKey, encryptionSalt, level, database, dsqlUserId, encryptedUserString, expiry, cookieString, csrfHeaderIsValue, csrfHeaderName, }: Param): AuthenticatedUser;
export default function userAuth({ request, req, encryptionKey, encryptionSalt, level, database, dsqlUserId, encryptedUserString, expiry, cookieString, csrfHeaderName, }: Param): AuthenticatedUser;
export {};
+15 -16
View File
@@ -1,5 +1,4 @@
"use strict";
// @ts-check
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
@@ -9,6 +8,7 @@ const decrypt_1 = __importDefault(require("../package-shared/functions/dsql/decr
const get_auth_cookie_names_1 = __importDefault(require("../package-shared/functions/backend/cookies/get-auth-cookie-names"));
const write_auth_files_1 = require("../package-shared/functions/backend/auth/write-auth-files");
const parseCookies_1 = __importDefault(require("../package-shared/utils/backend/parseCookies"));
const get_csrf_header_name_1 = __importDefault(require("../utils/get-csrf-header-name"));
const minuteInMilliseconds = 60000;
const hourInMilliseconds = minuteInMilliseconds * 60;
const dayInMilliseconds = hourInMilliseconds * 24;
@@ -21,7 +21,7 @@ const yearInMilliseconds = dayInMilliseconds * 365;
* @description This Function takes in a request object and returns a user object
* with the user's data
*/
function userAuth({ request, req, encryptionKey, encryptionSalt, level, database, dsqlUserId, encryptedUserString, expiry = weekInMilliseconds, cookieString, csrfHeaderIsValue, csrfHeaderName, }) {
function userAuth({ request, req, encryptionKey, encryptionSalt, level, database, dsqlUserId, encryptedUserString, expiry = weekInMilliseconds, cookieString, csrfHeaderName, }) {
try {
const finalRequest = req || request;
const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
@@ -39,7 +39,6 @@ function userAuth({ request, req, encryptionKey, encryptionSalt, level, database
const key = encryptedUserString
? encryptedUserString
: cookies[authKeyName];
const csrf = cookies[csrfName];
/**
* Grab the payload
*
@@ -89,24 +88,24 @@ function userAuth({ request, req, encryptionKey, encryptionSalt, level, database
* @description Grab the payload
*/
if ((level === null || level === void 0 ? void 0 : level.match(/deep/i)) && finalRequest) {
if (csrfHeaderName &&
finalRequest.headers[csrfHeaderName] !== userObject.csrf_k) {
const finalCsrfHeaderName = csrfHeaderName || (0, get_csrf_header_name_1.default)();
if (finalRequest.headers[finalCsrfHeaderName] !== userObject.csrf_k) {
return {
success: false,
payload: null,
msg: "CSRF_K mismatch",
};
}
const targetCsrfHeaderKey = Object.keys(finalRequest.headers)
.map((k) => k.replace(/[^a-zA-Z0-9\-]/g, ""))
.find((k) => k == userObject.csrf_k);
if (csrfHeaderIsValue && !targetCsrfHeaderKey) {
return {
success: false,
payload: null,
msg: "CSRF_K Header Key mismatch",
};
}
// const targetCsrfHeaderKey = Object.keys(finalRequest.headers)
// .map((k) => k.replace(/[^a-zA-Z0-9\-]/g, ""))
// .find((k) => k == userObject.csrf_k);
// if (csrfHeaderIsValue && !targetCsrfHeaderKey) {
// return {
// success: false,
// payload: null,
// msg: "CSRF_K Header Key mismatch",
// };
// }
}
const payloadCreationDate = Number(userObject.date);
if (Number.isNaN(payloadCreationDate) ||
@@ -138,7 +137,7 @@ function userAuth({ request, req, encryptionKey, encryptionSalt, level, database
payload: userObject,
};
}
catch ( /** @type {any} */error) {
catch (error) {
/**
* Return User Object
*