@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
125 lines • 7.08 kB
JavaScript
"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.PolicyMapper = void 0;
const user_group_policy_1 = require("../contracts/policies/user-group-policy");
const user_policy_1 = require("../contracts/policies/user-policy");
const internal_error_1 = require("../errors/internal-error");
const guard_1 = __importDefault(require("../guard"));
const policy_resource_1 = require("../models/policies/policy-resource");
const mapping_utilities_1 = require("./mapping-utilities");
const member_security_mapper_1 = require("./member-security-mapper");
const rules_mapper_1 = require("./rules-mapper");
class PolicyMapper {
/**
* Map a policy resource to a user group policy instance.
* @param client - An instance of an extended Content Hub client
* @param ruleResource - A policy resource
* @returns a user group policy or null.
*/
static mapToUserGroupPolicyAsync(client, policyResource) {
return __awaiter(this, void 0, void 0, function* () {
if (policyResource == null) {
return null;
}
guard_1.default.notNullOrUndefined(policyResource.userGroup);
const userGroupId = yield client.linkHelper.idFromEntityAsync(policyResource.userGroup);
guard_1.default.notNull(userGroupId);
guard_1.default.validId(userGroupId);
const createdBy = yield client.linkHelper.idFromEntityAsync(policyResource.createdBy);
const modifiedBy = yield client.linkHelper.idFromEntityAsync(policyResource.modifiedBy);
const memberSecurity = yield member_security_mapper_1.MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberSecurity);
const memberGroupSecurity = yield member_security_mapper_1.MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberGroupSecurity);
const rules = yield rules_mapper_1.RulesMapper.mapToRulesAsync(client, policyResource.rules);
const userGroupPolicy = new user_group_policy_1.UserGroupPolicy({
memberSecurity: memberSecurity,
memberGroupSecurity: memberGroupSecurity,
rules: rules,
userGroupId: userGroupId,
createdBy: createdBy,
createdOn: mapping_utilities_1.MappingUtilities.toNullableDate(policyResource.createdOn),
modifiedBy: modifiedBy,
modifiedOn: mapping_utilities_1.MappingUtilities.toNullableDate(policyResource.modifiedOn),
});
return userGroupPolicy;
});
}
/**
* Map a policy resource to a user policy instance.
* @param client - An instance of an extended Content Hub client
* @param policyResource - A policy resource
* @returns a user policy or null.
*/
static mapToUserPolicyAsync(client, policyResource) {
return __awaiter(this, void 0, void 0, function* () {
if (policyResource == null) {
return null;
}
guard_1.default.notNullOrUndefined(policyResource.user);
const userId = yield client.linkHelper.idFromEntityAsync(policyResource.user);
guard_1.default.notNull(userId);
guard_1.default.validId(userId);
const createdBy = yield client.linkHelper.idFromEntityAsync(policyResource.createdBy);
const modifiedBy = yield client.linkHelper.idFromEntityAsync(policyResource.modifiedBy);
const memberSecurity = yield member_security_mapper_1.MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberSecurity);
const memberGroupSecurity = yield member_security_mapper_1.MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberGroupSecurity);
const rules = yield rules_mapper_1.RulesMapper.mapToRulesAsync(client, policyResource.rules);
const userPolicy = new user_policy_1.UserPolicy({
memberSecurity: memberSecurity,
memberGroupSecurity: memberGroupSecurity,
rules: rules,
userId: userId,
createdBy: createdBy,
createdOn: mapping_utilities_1.MappingUtilities.toNullableDate(policyResource.createdOn),
modifiedBy: modifiedBy,
modifiedOn: mapping_utilities_1.MappingUtilities.toNullableDate(policyResource.modifiedOn),
});
return userPolicy;
});
}
/**
* Map a user (group) policy instance to a policy resource.
* @param client - An instance of an extended Content Hub client
* @param policy - A user policy or user group policy instance
* @returns A policy resource.
*/
static mapToResourceAsync(client, policy) {
return __awaiter(this, void 0, void 0, function* () {
if (policy == null) {
return null;
}
const rules = yield rules_mapper_1.RulesMapper.mapToRuleResourcesAsync(client, policy.rules);
const resource = new policy_resource_1.PolicyResource();
resource.rules = rules;
if (policy instanceof user_policy_1.UserPolicy) {
const user = yield client.linkHelper.entityToLinkAsync(policy.userId);
resource.user = user;
}
else if (policy instanceof user_group_policy_1.UserGroupPolicy) {
const userGroup = yield client.linkHelper.entityToLinkAsync(policy.userGroupId);
resource.userGroup = userGroup;
}
else {
throw new internal_error_1.InternalError("Policy type is not supported.");
}
const memberSecurity = yield member_security_mapper_1.MemberSecurityMapper.mapToMemberPolicyResourcesAsync(client, policy.memberSecurity);
resource.memberSecurity = memberSecurity;
const groupSecurity = yield member_security_mapper_1.MemberSecurityMapper.mapToMemberPolicyResourcesAsync(client, policy.memberGroupSecurity);
resource.memberGroupSecurity = groupSecurity;
return resource;
});
}
}
exports.PolicyMapper = PolicyMapper;
//# sourceMappingURL=policy-mapper.js.map