UNPKG

backendless-console-sdk

Version:

Backendless Console SDK for Node.js and browser

151 lines (146 loc) 9.15 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.buildPutUrl = exports.buildGetUrl = exports.buildDeleteUrl = void 0; var _urls = _interopRequireDefault(require("./urls")); var qs = _interopRequireWildcard(require("backendless-request/lib/qs")); var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty")); var _security = require("./constants/security"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /** * This class is created to resolve a huge amount of inconsistency between various security REST endpoints * Someday, all these inconsistency, hopefully will be resolved on server and we will be able to delete * this class or some part of it */ var baseUrl = function baseUrl(appId) { return _urls["default"].security(appId); }; /** * Returns calculated GET url in form of 'security/:stickingPoint?:queryParams' * * The stickingPoint value is calculated by the folliwing rules * * default => :service/:serviceItemId/:policy * service=files, policy=users => :service/:policy/:serviceItemId (BKNDLSS-13008) * service=files, policy=roles => :policy/:service/:serviceItemId (BKNDLSS-13008) * policy=owner => :service/ownerpolicy/:serviceItemId * policy=columns => :service/:serviceItemId/:policy/permissions * objectId != ALL_OBJECTS => :service/:serviceItemName/objectAcl/:objectId/:policy * * @returns {string} */ var buildGetUrl = function buildGetUrl(appId, policy, service, serviceItemId, serviceItemName, objectId, filterParams) { var isFilesService = service === _security.PermissionServices.FILES; var isRolesPolicy = policy === _security.PermissionPolicies.ROLES; var isOwnerPolicy = policy === _security.PermissionPolicies.OWNER; var isColumnsPolicy = policy === _security.PermissionPolicies.COLUMNS; var isObjectACL = objectId !== _security.ALL_OBJECTS; var stickingPoint = "".concat(service, "/").concat(serviceItemId, "/").concat(policy); if (filterParams.identity != null) { filterParams.name = filterParams.identity; } if (isOwnerPolicy) { stickingPoint = "".concat(service, "/ownerpolicy/").concat(serviceItemId); } else if (isFilesService && isRolesPolicy) { stickingPoint = "roles/".concat(service, "/").concat(encodeURIComponent(serviceItemId)); } else if (isFilesService) { if (filterParams.name) { stickingPoint = "users/search/".concat(encodeURI(filterParams.name), "/").concat(service, "/").concat(encodeURIComponent(serviceItemId)); } else { stickingPoint = "".concat(service, "/users/").concat(encodeURIComponent(serviceItemId)); } } else if (isColumnsPolicy) { stickingPoint = "".concat(service, "/").concat(serviceItemId, "/").concat(policy, "/permissions"); } else if (isObjectACL) { stickingPoint = "".concat(service, "/").concat(serviceItemName, "/objectAcl/").concat(objectId, "/").concat(policy); } return "".concat(baseUrl(appId), "/").concat(stickingPoint).concat((0, _isEmpty2["default"])(filterParams) ? '' : "?".concat(qs.stringify(filterParams))); }; /** * Returns calculated PUT url according to rules : * * default : 'security/:service/:serviceItemId/:policy/:policyItemId' * policy=owner : 'security/:service/ownerpolicy/{serviceItemId} * service=file & policy=users : 'security/:policy/:policyItemId/file/:serviceItemId' * service=file & policy=roles : 'security/:policy/:policyItemId/files/:serviceItemId' * objectId!=all : 'security/:service/:serviceItemName/objectAcl/:objectID/users/:policyItemId' * service=api & operation=all : 'security/:service/:serviceItemId/:policy/:policyItemId/:access' * * @returns {string} */ exports.buildGetUrl = buildGetUrl; var buildPutUrl = function buildPutUrl(appId, policy, service, serviceItemId, serviceItemName, objectId, policyItemId, permission) { var OWNER = _security.PermissionPolicies.OWNER, USERS = _security.PermissionPolicies.USERS, ROLES = _security.PermissionPolicies.ROLES, COLUMNS = _security.PermissionPolicies.COLUMNS; var isOwnerPolicy = policy === OWNER; var isUserPolicy = policy === USERS; var isRolesPolicy = policy === ROLES; var isColumnsPolicy = policy === COLUMNS; var isFilesService = service === _security.PermissionServices.FILES; var isApiService = service === _security.PermissionServices.API_SERVICES; var isObjectACL = objectId !== _security.ALL_OBJECTS; var stickingPoint = "".concat(service, "/").concat(serviceItemId, "/").concat(policy, "/").concat(policyItemId); if (isOwnerPolicy) { stickingPoint = "".concat(service, "/ownerpolicy/").concat(serviceItemId); } else if (isObjectACL) { stickingPoint = "".concat(service, "/").concat(serviceItemName, "/objectAcl/").concat(objectId, "/").concat(policy, "/").concat(policyItemId); } else if (isFilesService) { if (isUserPolicy) { stickingPoint = "".concat(policy, "/").concat(policyItemId, "/file/").concat(serviceItemId); } else if (isRolesPolicy) { stickingPoint = "".concat(policy, "/").concat(policyItemId, "/files/").concat(serviceItemId); } } else if (isApiService && permission.operation === 'all') { stickingPoint += '/access/' + permission.access; } else if (isColumnsPolicy) { stickingPoint = "".concat(service, "/").concat(serviceItemId, "/").concat(policy, "/permissions/").concat(permission.operation, "/").concat(policyItemId); } return "".concat(baseUrl(appId), "/").concat(stickingPoint); }; /** * Returns calculated DELETE url according to rules : * * default : security/:service/:serviceItemId/:policy/:policyItemId:(/:operation) * policy=owner : security/:service/ownerpolicy/:serviceItemId/:operation * objectId!=all & policy=roles : security/:service/:serviceItemName/objectAcl/:objectId/:policy/:operation * objectId!=all & policy=users : security/:service/:serviceItemName/objectAcl/:objectId/:policy/:policyItemId * service=files : security/:policy/:policyItemId/:service/:serviceItemId * * @returns {string} */ exports.buildPutUrl = buildPutUrl; var buildDeleteUrl = function buildDeleteUrl(appId, policy, policyItemId, service, serviceItemId, serviceItemName, objectId, operation) { var isFilesService = service === _security.PermissionServices.FILES; var isOwnerPolicy = policy === _security.PermissionPolicies.OWNER; var isRolesPolicy = policy === _security.PermissionPolicies.ROLES; var isObjectACL = objectId !== _security.ALL_OBJECTS; var operationEscaped = operation && encodeURIComponent(operation); if (isOwnerPolicy) { return "".concat(baseUrl(appId), "/").concat(service, "/ownerpolicy/").concat(serviceItemId, "/").concat(operationEscaped); } if (isObjectACL) { var stickingPoint = isRolesPolicy ? operationEscaped : encodeURIComponent(policyItemId); return "".concat(baseUrl(appId), "/").concat(service, "/").concat(serviceItemName, "/objectAcl/").concat(objectId, "/").concat(policy, "/").concat(stickingPoint); } if (isObjectACL && isRolesPolicy) { return "".concat(baseUrl(appId), "/").concat(service, "/").concat(serviceItemName, "/ownerpolicy/").concat(policyItemId, "/").concat(operationEscaped); } if (isFilesService) { if (isRolesPolicy) { return "".concat(baseUrl(appId), "/").concat(policy, "/").concat(policyItemId, "/").concat(service, "/").concat(serviceItemId); } return "".concat(baseUrl(appId), "/").concat(service, "/").concat(policy, "/").concat(policyItemId, "/").concat(serviceItemId); } var result = "".concat(baseUrl(appId), "/").concat(service, "/").concat(serviceItemId, "/").concat(policy, "/").concat(policyItemId); if (operationEscaped && operationEscaped !== 'all') { result += '/' + operationEscaped; } return result; }; exports.buildDeleteUrl = buildDeleteUrl;