"use strict"; exports.id = 613; exports.ids = [613]; exports.modules = { /***/ 613: /***/ ((module, __unused_webpack_exports, __webpack_require__) => { // @ts-check /** * ============================================================================== * Imports * ============================================================================== */ const fs = __webpack_require__(7147); //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// const datasquirel = __webpack_require__(9538); const serverError = __webpack_require__(2163); const DB_HANDLER = __webpack_require__(2224); const addDbEntry = __webpack_require__(5338); /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ /** * Add Admin User on Login * ============================================================================== * * @description this function handles admin users that have been invited by another * admin user. This fires when the invited user has been logged in or a new account * has been created for the invited user * * @param {object} params - parameters object * * @param {object} params.query - query object * @param {number} params.query.invite - Invitation user id * @param {string} params.query.database_access - String containing authorized databases * @param {string} params.query.priviledge - String containing databases priviledges * @param {string} params.query.email - Inviting user email address * * @param {import("@/package-shared/types").UserType} params.user - invited user object * * @returns {Promise} new user auth object payload */ module.exports = async function addAdminUserOnLogin({ query , user }) { try { /** * Fetch user * * @description Fetch user from db */ // @ts-ignore const { invite , database_access , priviledge , email } = query; const lastInviteTimeArray = await DB_HANDLER(`SELECT date_created_code FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, [ invite, email ]); // if (lastInviteTimeArray && lastInviteTimeArray[0]?.date_created_code) { // const timeSinceLastInvite = Date.now() - parseInt(lastInviteTimeArray[0].date_created_code); // if (timeSinceLastInvite > 21600000) { // throw new Error("Invitation expired"); // } // } else if (!lastInviteTimeArray || !lastInviteTimeArray[0]) { // throw new Error("No Invitation Found"); // } if (!lastInviteTimeArray || !lastInviteTimeArray[0]) { throw new Error("No Invitation Found"); } //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// // @ts-ignore const invitingUserDb = await DB_HANDLER(`SELECT first_name,last_name,email FROM users WHERE id=?`, [ invite ]); if (invitingUserDb?.[0]) { const existingUserUser = await DB_HANDLER(`SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, [ invite, user.id, email ]); if (existingUserUser?.[0]) { console.log("User already added"); } else { // const newUserUser = await DB_HANDLER( // `INSERT IGNORE INTO user_users // (user_id, invited_user_id, database_access, first_name, last_name, phone, email, username, user_type, user_priviledge) // VALUES // (?,?,?,?,?,?,?,?,?,?) // )`, // [ // invite, // user.id, // database_access, // user.first_name, // user.last_name, // user.phone, // user.email, // user.username, // "admin", // priviledge, // ] // ); addDbEntry({ dbFullName: "datasquirel", tableName: "user_users", data: { user_id: invite, invited_user_id: user.id, database_access: database_access, first_name: user.first_name, last_name: user.last_name, phone: user.phone, email: user.email, username: user.username, user_type: "admin", user_priviledge: priviledge, image: user.image, image_thumbnail: user.image_thumbnail } }); //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// // @ts-ignore const dbTableData = await DB_HANDLER(`SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, [ invite, email ]); // @ts-ignore const clearEntries = await DB_HANDLER(`DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?`, [ invite, user.id ]); //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// if (dbTableData && dbTableData[0]) { const dbTableEntries = dbTableData[0].db_tables_data.split("|"); for(let i = 0; i < dbTableEntries.length; i++){ const dbTableEntry = dbTableEntries[i]; const dbTableEntryArray = dbTableEntry.split("-"); const [db_slug, table_slug] = dbTableEntryArray; const newEntry = await addDbEntry({ dbFullName: "datasquirel", tableName: "delegated_user_tables", data: { delegated_user_id: user.id, root_user_id: invite, database: db_slug, table: table_slug, priviledge: priviledge } }); } } //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// } // @ts-ignore const inviteAccepted = await DB_HANDLER(`UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, [ invite, email ]); } //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// } catch (/** @type {any} */ error) { //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// serverError({ component: "addAdminUserOnLogin", message: error.message, user: user }); } }; //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// /***/ }) }; ;