UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

52 lines 2.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkIfAdminOverrideEnabledFragment = exports.ensureMinimumServerRoleFragment = void 0; const authErrors_js_1 = require("../domain/authErrors.js"); const constants_js_1 = require("../../core/constants.js"); const result_1 = require("true-myth/result"); const index_js_1 = require("../../core/index.js"); const roles_js_1 = require("../domain/logic/roles.js"); /** * Ensure user has a minimum server role */ const ensureMinimumServerRoleFragment = (loaders) => async ({ userId, role }) => { if (!userId?.length) return (0, result_1.err)(new authErrors_js_1.ServerNoSessionError()); const requiredServerRole = role || constants_js_1.Roles.Server.Guest; const isLowestRequestedRole = [constants_js_1.Roles.Server.Guest, constants_js_1.Roles.Server.ArchivedUser].includes(requiredServerRole); const userServerRole = await loaders.getServerRole({ userId }); if (!userServerRole) return (0, result_1.err)(new authErrors_js_1.ServerNoAccessError()); const hasRequiredRole = (0, roles_js_1.isMinimumServerRole)(userServerRole, requiredServerRole); return hasRequiredRole ? (0, result_1.ok)() : (0, result_1.err)(isLowestRequestedRole ? new authErrors_js_1.ServerNoAccessError() : new authErrors_js_1.ServerNotEnoughPermissionsError()); }; exports.ensureMinimumServerRoleFragment = ensureMinimumServerRoleFragment; /** * Check if user has admin override enabled */ const checkIfAdminOverrideEnabledFragment = (loaders) => async ({ userId }) => { const adminOverrideAvailable = await loaders.getAdminOverrideEnabled(); if (!adminOverrideAvailable) return (0, result_1.ok)(false); const hasAdminRole = await (0, exports.ensureMinimumServerRoleFragment)(loaders)({ userId, role: constants_js_1.Roles.Server.Admin }); if (hasAdminRole.isErr) { switch (hasAdminRole.error.code) { case authErrors_js_1.ServerNoAccessError.code: case authErrors_js_1.ServerNoSessionError.code: case authErrors_js_1.ServerNotEnoughPermissionsError.code: return (0, result_1.ok)(false); default: (0, index_js_1.throwUncoveredError)(hasAdminRole.error); } } return (0, result_1.ok)(true); }; exports.checkIfAdminOverrideEnabledFragment = checkIfAdminOverrideEnabledFragment; //# sourceMappingURL=server.js.map