"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addAdminUserOnLogin; const serverError_1 = __importDefault(require("./serverError")); const DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DB_HANDLER")); const addDbEntry_1 = __importDefault(require("./db/addDbEntry")); const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER")); /** * 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 */ function addAdminUserOnLogin(_a) { return __awaiter(this, arguments, void 0, function* ({ query, user, }) { try { const finalDbHandler = global.DSQL_USE_LOCAL ? LOCAL_DB_HANDLER_1.default : DB_HANDLER_1.default; const { invite, database_access, priviledge, email } = query; const lastInviteTimeQuery = `SELECT date_created_code FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`; const lastInviteTimeValues = [invite, email]; const lastInviteTimeArray = yield finalDbHandler(lastInviteTimeQuery, lastInviteTimeValues); if (!lastInviteTimeArray || !lastInviteTimeArray[0]) { throw new Error("No Invitation Found"); } //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// const invitingUserDbQuery = `SELECT first_name,last_name,email FROM users WHERE id=?`; const invitingUserDbValues = [invite]; const invitingUserDb = yield finalDbHandler(invitingUserDbQuery, invitingUserDbValues); if (invitingUserDb === null || invitingUserDb === void 0 ? void 0 : invitingUserDb[0]) { const existingUserUser = yield finalDbHandler(`SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, [invite, user.id, email]); if (existingUserUser === null || existingUserUser === void 0 ? void 0 : existingUserUser[0]) { console.log("User already added"); } else { (0, addDbEntry_1.default)({ 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, }, }); //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// const dbTableData = yield finalDbHandler(`SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, [invite, email]); const clearEntries = yield finalDbHandler(`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 = yield (0, addDbEntry_1.default)({ dbFullName: "datasquirel", tableName: "delegated_user_tables", data: { delegated_user_id: user.id, root_user_id: invite, database: db_slug, table: table_slug, priviledge: priviledge, }, }); } } } const inviteAccepted = yield finalDbHandler(`UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, [invite, email]); } } catch (error) { (0, serverError_1.default)({ component: "addAdminUserOnLogin", message: error.message, user: user, }); } }); }