"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = getToken;
const decrypt_1 = __importDefault(require("../package-shared/functions/dsql/decrypt"));
const get_auth_cookie_names_1 = __importDefault(require("../package-shared/functions/backend/cookies/get-auth-cookie-names"));
const parseCookies_1 = __importDefault(require("../package-shared/utils/backend/parseCookies"));
/**
 * Get just the access token for user
 * ==============================================================================
 * @description This Function takes in a request object and returns a user token
 * string and csrf token string
 */
function getToken({ request, encryptionKey, encryptionSalt, database, useLocal, cookieString, }) {
    try {
        /**
         * Grab the payload
         *
         * @description Grab the payload
         */
        const cookies = (0, parseCookies_1.default)({ request, cookieString });
        const keynames = (0, get_auth_cookie_names_1.default)();
        const authKeyName = keynames.keyCookieName;
        const csrfName = keynames.csrfCookieName;
        const key = cookies[authKeyName];
        const csrf = cookies[csrfName];
        /**
         * Grab the payload
         *
         * @description Grab the payload
         */
        let userPayload = (0, decrypt_1.default)({
            encryptedString: key,
            encryptionKey,
            encryptionSalt,
        });
        /**
         * Grab the payload
         *
         * @description Grab the payload
         */
        if (!userPayload) {
            return { key: undefined, csrf: undefined };
        }
        /**
         * Grab the payload
         *
         * @description Grab the payload
         */
        let userObject = JSON.parse(userPayload);
        if (!userObject.csrf_k) {
            return { key: undefined, csrf: undefined };
        }
        /**
         * Return User Object
         *
         * @description Return User Object
         */
        return { key, csrf };
    }
    catch (error) {
        /**
         * Return User Object
         *
         * @description Return User Object
         */
        return {
            key: undefined,
            csrf: undefined,
        };
    }
}