private string SearchFirstPath(string aclPath, PermissionInfo basePermInfo, PermissionSet permSet, int mask, bool deny) { string lastPath = basePermInfo.Path; for (var permInfo = basePermInfo; permInfo != null; permInfo = permInfo.Inherits ? permInfo.Parent : null) { var entry = permInfo.GetExplicitEntry(permSet.PrincipalId); if (entry != null) { var bit = mask & (deny ? entry.DenyBits : entry.AllowBits); if (bit == 0) break; lastPath = permInfo.Path; } } return aclPath == lastPath ? null : lastPath; }
internal void Combine(PermissionSet permissionSet) { AllowBits |= permissionSet.AllowBits; DenyBits |= permissionSet.DenyBits; }
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(); }
private void RemoveExplicitEntriesWithoutReset() { foreach (var entry in GetExplicitEntries()) { var e = new PermissionSet(entry.PrincipalId, true, 0, 0).ToEntry(entry.DefinedOnNodeId); DataProvider.Current.SetPermission(e); } }
private void SetPermissionsWithoutReset(int principalId, bool isInheritable, PermissionValue[] permissionValues) { var permSet = new PermissionSet(principalId, isInheritable, permissionValues); var allowBits = permSet.AllowBits; var denyBits = permSet.DenyBits; SetBits(ref allowBits, ref denyBits); permSet = new PermissionSet(principalId, isInheritable, allowBits, denyBits); var entry = permSet.ToEntry(NodeId); DataProvider.Current.SetPermission(entry); }
private void AddPermissionSet(string path, int id, int creator, int lastModifier, bool inherited, PermissionSet entry) { if (!permissionTable.ContainsKey(path)) permissionTable.Add(path, CreatePermissionInfo(path, id, creator, lastModifier, inherited)); permissionTable[path].PermissionSets.Add(entry); }