"use strict"; exports.id = 5116; exports.ids = [5116]; exports.modules = { /***/ 5116: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // @ts-check /** * ============================================================================== * Imports * ============================================================================== */ const http = __webpack_require__(3685); const decrypt = __webpack_require__(5304); /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** * @typedef {object} grabDelegatedUserFromCookieReturn * @property {number} dbUserId * @property {number} [dbUserId] * @property {number} [rootUserId] * @property {string} [rootUserName] * @property {string} [rootUserEmail] * @property {string} [rootUserImage] * @property {string} [databaseFullName] * @property {string} [databaseSlug] * @property {string[]} [allowedTables] * @property {string} [priviledges] * @property {string} [database] * @property {boolean} [delegated] */ /** * @param {object} params - user id * @param {import("next").NextApiRequest | http.IncomingMessage & { cookies: Partial<{ [key: string]: string; }>}} params.request - HTTPS request object * @param {string | string[]} params.databaseSlug - Database name slug * @param {{ id: number, first_name: string, last_name: string }} params.user * @param {any} params.query - query params * * @returns {Promise} new user auth object payload */ module.exports = async function grabDelegatedUserFromCookie({ request , databaseSlug , user , query , }) { try { /** * Fetch user * * @description Fetch user from db */ let dbUserId = user.id; let delegatedUserObject = null; if (!query?.delegated) return { dbUserId }; const rootUserId = query.dbUserId; const dbFullName = `${process.env.DSQL_USER_DB_PREFIX}${rootUserId}_${databaseSlug}`; const tokenName = `${process.env.DSQL_USER_DELEGATED_DB_COOKIE_PREFIX}${dbFullName}`; try { if (!request.cookies?.[tokenName]) throw new Error("Cookie not present"); // @ts-ignore const decryptedToken = decrypt(request.cookies[tokenName]); if (!decryptedToken) throw new Error("Invalid Token"); delegatedUserObject = JSON.parse(decryptedToken); if (delegatedUserObject.databaseSlug === databaseSlug) { dbUserId = delegatedUserObject.rootUserId; return { dbUserId: dbUserId, rootUserId: delegatedUserObject.rootUserId, rootUserName: delegatedUserObject.rootUserName, rootUserEmail: delegatedUserObject.rootUserEmail, rootUserImage: delegatedUserObject.rootUserImage, databaseFullName: delegatedUserObject.databaseFullName, databaseSlug: delegatedUserObject.databaseSlug, allowedTables: delegatedUserObject.allowedTables, priviledges: delegatedUserObject.priviledges, database: delegatedUserObject.databaseSlug, delegated: true }; } } catch (error) { // serverError({ // component: "grabDelegatedUserFromCookie", // message: error.message, // user: user, // }); } //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// return { dbUserId }; } catch (error1) { return null; } }; //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// /***/ }) }; ;