@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
118 lines • 6.31 kB
JavaScript
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());
});
};
import { UserGroupPolicy } from "../contracts/policies/user-group-policy";
import { UserPolicy } from "../contracts/policies/user-policy";
import { InternalError } from "../errors/internal-error";
import Guard from "../guard";
import { PolicyResource } from "../models/policies/policy-resource";
import { MappingUtilities } from "./mapping-utilities";
import { MemberSecurityMapper } from "./member-security-mapper";
import { RulesMapper } from "./rules-mapper";
export 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.notNullOrUndefined(policyResource.userGroup);
const userGroupId = yield client.linkHelper.idFromEntityAsync(policyResource.userGroup);
Guard.notNull(userGroupId);
Guard.validId(userGroupId);
const createdBy = yield client.linkHelper.idFromEntityAsync(policyResource.createdBy);
const modifiedBy = yield client.linkHelper.idFromEntityAsync(policyResource.modifiedBy);
const memberSecurity = yield MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberSecurity);
const memberGroupSecurity = yield MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberGroupSecurity);
const rules = yield RulesMapper.mapToRulesAsync(client, policyResource.rules);
const userGroupPolicy = new UserGroupPolicy({
memberSecurity: memberSecurity,
memberGroupSecurity: memberGroupSecurity,
rules: rules,
userGroupId: userGroupId,
createdBy: createdBy,
createdOn: MappingUtilities.toNullableDate(policyResource.createdOn),
modifiedBy: modifiedBy,
modifiedOn: 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.notNullOrUndefined(policyResource.user);
const userId = yield client.linkHelper.idFromEntityAsync(policyResource.user);
Guard.notNull(userId);
Guard.validId(userId);
const createdBy = yield client.linkHelper.idFromEntityAsync(policyResource.createdBy);
const modifiedBy = yield client.linkHelper.idFromEntityAsync(policyResource.modifiedBy);
const memberSecurity = yield MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberSecurity);
const memberGroupSecurity = yield MemberSecurityMapper.mapToMemberPoliciesAsync(client, policyResource.memberGroupSecurity);
const rules = yield RulesMapper.mapToRulesAsync(client, policyResource.rules);
const userPolicy = new UserPolicy({
memberSecurity: memberSecurity,
memberGroupSecurity: memberGroupSecurity,
rules: rules,
userId: userId,
createdBy: createdBy,
createdOn: MappingUtilities.toNullableDate(policyResource.createdOn),
modifiedBy: modifiedBy,
modifiedOn: 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 RulesMapper.mapToRuleResourcesAsync(client, policy.rules);
const resource = new PolicyResource();
resource.rules = rules;
if (policy instanceof UserPolicy) {
const user = yield client.linkHelper.entityToLinkAsync(policy.userId);
resource.user = user;
}
else if (policy instanceof UserGroupPolicy) {
const userGroup = yield client.linkHelper.entityToLinkAsync(policy.userGroupId);
resource.userGroup = userGroup;
}
else {
throw new InternalError("Policy type is not supported.");
}
const memberSecurity = yield MemberSecurityMapper.mapToMemberPolicyResourcesAsync(client, policy.memberSecurity);
resource.memberSecurity = memberSecurity;
const groupSecurity = yield MemberSecurityMapper.mapToMemberPolicyResourcesAsync(client, policy.memberGroupSecurity);
resource.memberGroupSecurity = groupSecurity;
return resource;
});
}
}
//# sourceMappingURL=policy-mapper.js.map