import http from "http"; import decrypt from "../package-shared/functions/dsql/decrypt"; import getAuthCookieNames from "../package-shared/functions/backend/cookies/get-auth-cookie-names"; import parseCookies from "../package-shared/utils/backend/parseCookies"; type Param = { request?: http.IncomingMessage; cookieString?: string; encryptionKey: string; encryptionSalt: string; database: string; useLocal?: boolean; }; type Return = { key: string | undefined; csrf: string | undefined; }; /** * 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 */ export default function getToken({ request, encryptionKey, encryptionSalt, database, useLocal, cookieString, }: Param): Return { try { /** * Grab the payload * * @description Grab the payload */ const cookies = parseCookies({ request, cookieString }); const keynames = getAuthCookieNames(); 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 = decrypt({ 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, }; } }