private Rule CreateRule(string description, long iid, string inputClaim, ServiceBusOperation outputClaim) { return(new Rule { Description = description, IssuerId = iid, InputClaimType = ClaimTypes.NameIdentifier, InputClaimValue = inputClaim, OutputClaimType = SERVICE_BUS_CLAIM_TYPE, OutputClaimValue = Enum.GetName(typeof(ServiceBusOperation), outputClaim) }); }
private void CreateThingInRule(Guid id, string ruleGroupName, ServiceBusOperation operation) { var thing = _thingRepository.GetThingById(id); var partition = thing.Partition; var acsMgr = GetAccessControlManagementService(partition.Namespace, partition.AccessControl, partition.AccessControlSecret); var issuerAcs = acsMgr.GetIssuerByName(ISSUER_ACCESS_CONTROL_SERVICE); var ruleGroup = acsMgr.RuleGroups.Where(rg => rg.Name == ruleGroupName).FirstOrDefault(); var rule = CreateRule(thing.Description, issuerAcs.Id, thing.Id.ToString(), operation); if (acsMgr.Rules.Where(r => r.RuleGroup.Name == ruleGroupName && r.InputClaimValue == rule.InputClaimValue && r.OutputClaimValue == rule.OutputClaimValue).FirstOrDefault() == null) { acsMgr.AddRelatedObject(ruleGroup, NAVIGATION_PROPERTY_RULES, rule); acsMgr.SaveChangesBatch(); } }