UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

73 lines (72 loc) 3.44 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const BaseController_1 = __importDefault(require("../controllers/BaseController")); const interfaces_1 = require("../interfaces"); const ApiKeyUserService_1 = require("../services/ApiKeyUserService"); const WorkspaceService_1 = require("../services/WorkspaceService"); class ApiKeyUserController extends BaseController_1.default { constructor() { super(new ApiKeyUserService_1.ApiKeyUserService()); this.service.ownership = this.ownership; } read(queryParams) { return super.read(); } create(body, queryParams) { return super.create(body); } update(body, queryParams) { return super.update(body); } delete(queryParams) { return super.delete(); } async joinWorkspace(data) { const { userId, workspace: workspaceSlug } = data; // console.log("{ userId, workspace } :>> ", { userId, workspace }); try { if (!userId) throw new Error(`"userId" is required.`); if (!workspaceSlug) throw new Error(`"workspaceSlug" is required.`); // console.log("==========="); // console.log("userId, workspaceSlug :>> ", userId, workspaceSlug); const workspaceSvc = new WorkspaceService_1.WorkspaceService(this.ownership); const workspace = await workspaceSvc.findOne({ slug: workspaceSlug }); if (!workspace) throw new Error(`Workspace "${workspaceSlug}" not found.`); // console.log("workspace :>> ", workspace); const wsId = workspace._id; const user = await this.service.findOne({ id: userId }); // console.log("user :>> ", user); // console.log("wsId :>> ", wsId); // validations if (!user) throw new Error(`User not found.`); if (!workspace.public) throw new Error(`This workspace is private, you need to ask the administrator to add you in first.`); let updatedUser = user; const isUserJoinedThisWorkspace = (user.workspaces || []).includes(wsId); // console.log("isUserJoinedThisWorkspace :>> ", isUserJoinedThisWorkspace); const isWorkspaceActive = typeof user.activeWorkspace !== "undefined" && user.activeWorkspace === wsId; // console.log("isWorkspaceActive :>> ", isWorkspaceActive); // console.log("user.workspaces :>> ", user.workspaces); if (!isUserJoinedThisWorkspace) { [updatedUser] = await this.service.update({ _id: userId }, { $push: { workspaces: workspace._id } }, { raw: true }); } // console.log("[1] updatedUser :>> ", updatedUser[0]); // make this workspace active if (!isWorkspaceActive) [updatedUser] = await this.service.update({ _id: userId }, { activeWorkspace: wsId }); // console.log("[2] updatedUser :>> ", updatedUser[0]); return (0, interfaces_1.respondSuccess)({ data: updatedUser }); } catch (e) { return (0, interfaces_1.respondFailure)(e.message); } } } exports.default = ApiKeyUserController;