public void SetPermission(ISecurityMember securityMember, bool isInheritable, PermissionType permissionType, PermissionValue permissionValue) { if (securityMember == null) throw new ArgumentNullException("securityMember"); if (permissionType == null) throw new ArgumentNullException("permissionType"); Assert(PermissionType.SetPermissions); var entry = PermissionEvaluator.Instance.GetExplicitEntry(this._node.Path, securityMember.Id); var allowBits = 0; var denyBits = 0; if (entry != null) { allowBits = entry.AllowBits; denyBits = entry.DenyBits; } SetBits(ref allowBits, ref denyBits, permissionType, permissionValue); var memberId = securityMember.Id; var permSet = new PermissionSet(memberId, isInheritable, allowBits, denyBits); entry = permSet.ToEntry(this.NodeId); DataProvider.Current.SetPermission(entry); Reset(); }
public AclEditor SetPermission(ISecurityMember securityMember, bool propagates, PermissionType permissionType, PermissionValue permissionValue) { return(SetPermission(securityMember.Id, propagates, permissionType, permissionValue)); }
//=========================================== internal SnAccessControlEntry GetEntry(ISecurityMember principal, bool propagates) { return(GetEntry(principal.Id, propagates) ?? CreateEntry(principal.Id, propagates)); }
public static IDictionary <Content, int> GetRelatedItemsOneLevel(Content content, PermissionLevel level, ISecurityMember member, IEnumerable <PermissionType> permissions) { content.ContentHandler.Security.AssertSubtree(PermissionType.SeePermissions); var nodes = SecurityHandler.GetRelatedNodesOneLevel(content.Path.ToLower(), level, member, permissions); var result = new Dictionary <Content, int>(nodes.Count); foreach (var item in nodes) { result.Add(Content.Create(item.Key), item.Value); } return(result); }
public static IEnumerable <Content> GetRelatedItems(Content content, PermissionLevel level, bool explicitOnly, ISecurityMember member, IEnumerable <PermissionType> permissions) { content.ContentHandler.Security.AssertSubtree(PermissionType.SeePermissions); return(SecurityHandler.GetRelatedNodes(content.Path.ToLower(), level, explicitOnly, member, permissions).Select(n => Content.Create(n))); }
public static IDictionary <PermissionType, int> GetRelatedPermissions(Content content, PermissionLevel level, bool explicitOnly, ISecurityMember member, IEnumerable <string> includedTypes) { content.ContentHandler.Security.AssertSubtree(PermissionType.SeePermissions); return(SecurityHandler.GetRelatedPermissions(content.Path.ToLower(), level, explicitOnly, member, includedTypes)); }
//=========================================== internal SnAccessControlEntry GetEntry(ISecurityMember principal, bool propagates) { return GetEntry(principal.Id, propagates) ?? CreateEntry(principal.Id, propagates); }
public static IEnumerable <Content> GetRelatedItemsOneLevel(Content content, PermissionLevel level, ISecurityMember member, IEnumerable <PermissionType> permissions) { content.ContentHandler.Security.AssertSubtree(PermissionType.SeePermissions); return(SecurityHandler.PermissionQuery.GetRelatedNodesOneLevel(content.Id, level, member.Id, permissions).Select(n => Content.Create(n))); }
public AclEditor SetPermission(ISecurityMember securityMember, bool propagates, PermissionType permissionType, PermissionValue permissionValue) { return SetPermission(securityMember.Id, propagates, permissionType, permissionValue); }
private SecurityEntry SearchEntry(IEnumerable<SecurityEntry> entries, ISecurityMember member, bool propagates) { return entries.Where(x => x.PrincipalId == member.Id && x.Propagates == propagates).FirstOrDefault(); }
public SnAccessControlEntry GetEntry(ISecurityMember principal, bool propagates) { return (SnAccessControlEntry)CallPrivateMethod("GetEntry", principal, propagates); }
private void ResetSeeOpenOpenMinorPermissions(Node node, ISecurityMember user) { new AclEditor(node). SetPermission(user, true, PermissionType.See, PermissionValue.NonDefined). SetPermission(user, true, PermissionType.Open, PermissionValue.NonDefined). SetPermission(user, true, PermissionType.OpenMinor, PermissionValue.NonDefined). Apply(); }
private string SetForcedSettingsTest(int operationNumber, Node node, ISecurityMember member, string startState, string expectedState, PermissionType permType, PermissionValue value, bool acl) { ResetSeeOpenOpenMinorPermissions(node, member); var perms = new PermissionValue[ActiveSchema.PermissionTypes.Count]; var permCount = perms.Length; for (int i = 0; i < startState.Length; i++) { if (startState[i] == '+') perms[permCount - i - 1] = PermissionValue.Allow; else if (startState[i] == '-') perms[permCount - i - 1] = PermissionValue.Deny; } //---- prerequisit node.Security.SetPermissions(member.Id, true, perms); //---- test operation if(acl) new AclEditor(node).SetPermission(member, true, permType, value).Apply(); else node.Security.SetPermission(member, true, permType, value); string result = null; SecurityEntry entry = null; foreach (var e in node.Security.GetExplicitEntries()) { if (e.PrincipalId == member.Id) { entry = e; break; } } if (entry == null) { result = "______________"; } else { var chars = new char[permCount]; var values = entry.PermissionValues; for (int i = 0; i < values.Length; i++) { if (values[i] == PermissionValue.Allow) chars[permCount - i - 1] = '+'; else if (values[i] == PermissionValue.Deny) chars[permCount - i - 1] = '-'; else chars[permCount - i - 1] = '_'; } result = new String(chars); } if (result == expectedState) return null; return String.Concat("State is '", result, "', expected '", expectedState, "' at operation ", operationNumber); }
private string SetPermForcedSettingsTest(int operationNumber, Node node, ISecurityMember member, string startState, string expectedState, PermissionType permType, PermissionValue value) { return SetForcedSettingsTest(operationNumber, node, member, startState, expectedState, permType, value, false); }