Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetRules()

AuthorizationRuleCollection System.Security.AccessControl.CommonObjectSecurity.GetRules ( bool access,
bool includeExplicit,
bool includeInherited,
Type targetType )
inlineprivateinherited

Definition at line 31 of file CommonObjectSecurity.cs.

32 {
33 ReadLock();
34 try
35 {
36 AuthorizationRuleCollection authorizationRuleCollection = new AuthorizationRuleCollection();
37 if (!IsValidTargetTypeStatic(targetType))
38 {
40 }
41 CommonAcl commonAcl = null;
42 if (access)
43 {
44 if ((_securityDescriptor.ControlFlags & ControlFlags.DiscretionaryAclPresent) != 0)
45 {
47 }
48 }
49 else if ((_securityDescriptor.ControlFlags & ControlFlags.SystemAclPresent) != 0)
50 {
52 }
53 if (commonAcl == null)
54 {
55 return authorizationRuleCollection;
56 }
57 IdentityReferenceCollection identityReferenceCollection = null;
58 if (targetType != typeof(SecurityIdentifier))
59 {
60 IdentityReferenceCollection identityReferenceCollection2 = new IdentityReferenceCollection(commonAcl.Count);
61 for (int i = 0; i < commonAcl.Count; i++)
62 {
63 CommonAce commonAce = commonAcl[i] as CommonAce;
64 if (AceNeedsTranslation(commonAce, access, includeExplicit, includeInherited))
65 {
66 identityReferenceCollection2.Add(commonAce.SecurityIdentifier);
67 }
68 }
69 identityReferenceCollection = identityReferenceCollection2.Translate(targetType);
70 }
71 int num = 0;
72 for (int j = 0; j < commonAcl.Count; j++)
73 {
74 CommonAce commonAce2 = commonAcl[j] as CommonAce;
75 if (AceNeedsTranslation(commonAce2, access, includeExplicit, includeInherited))
76 {
77 IdentityReference identityReference = ((targetType == typeof(SecurityIdentifier)) ? commonAce2.SecurityIdentifier : identityReferenceCollection[num++]);
78 if (access)
79 {
80 authorizationRuleCollection.AddRule(AccessRuleFactory(type: (commonAce2.AceQualifier != 0) ? AccessControlType.Deny : AccessControlType.Allow, identityReference: identityReference, accessMask: commonAce2.AccessMask, isInherited: commonAce2.IsInherited, inheritanceFlags: commonAce2.InheritanceFlags, propagationFlags: commonAce2.PropagationFlags));
81 }
82 else
83 {
84 authorizationRuleCollection.AddRule(AuditRuleFactory(identityReference, commonAce2.AccessMask, commonAce2.IsInherited, commonAce2.InheritanceFlags, commonAce2.PropagationFlags, commonAce2.AuditFlags));
85 }
86 }
87 }
88 return authorizationRuleCollection;
89 }
90 finally
91 {
92 ReadUnlock();
93 }
94 }
static string Arg_MustBeIdentityReferenceType
Definition SR.cs:16
Definition SR.cs:7
bool AceNeedsTranslation([NotNullWhen(true)] CommonAce ace, bool isAccessAce, bool includeExplicit, bool includeInherited)
AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
readonly CommonSecurityDescriptor _securityDescriptor
IdentityReferenceCollection Translate(Type targetType)

References System.Security.AccessControl.ObjectSecurity< T >._securityDescriptor, System.Security.AccessControl.KnownAce.AccessMask, System.Security.AccessControl.ObjectSecurity< T >.AccessRuleFactory(), System.Security.AccessControl.CommonObjectSecurity.AceNeedsTranslation(), System.Security.Principal.IdentityReferenceCollection.Add(), System.Security.AccessControl.AuthorizationRuleCollection.AddRule(), System.SR.Arg_MustBeIdentityReferenceType, System.Security.AccessControl.GenericAce.AuditFlags, System.Security.AccessControl.ObjectSecurity< T >.AuditRuleFactory(), System.Security.AccessControl.CommonSecurityDescriptor.ControlFlags, System.Security.AccessControl.CommonAcl.Count, System.Security.AccessControl.CommonSecurityDescriptor.DiscretionaryAcl, System.Security.AccessControl.GenericAce.InheritanceFlags, System.Security.AccessControl.GenericAce.IsInherited, System.Security.AccessControl.CommonObjectSecurity.IsValidTargetTypeStatic(), System.Security.AccessControl.GenericAce.PropagationFlags, System.Security.AccessControl.ObjectSecurity< T >.ReadLock(), System.Security.AccessControl.ObjectSecurity< T >.ReadUnlock(), System.Security.AccessControl.KnownAce.SecurityIdentifier, System.Security.AccessControl.CommonSecurityDescriptor.SystemAcl, System.Security.Principal.IdentityReferenceCollection.Translate(), and System.type.

Referenced by System.Security.AccessControl.CommonObjectSecurity.GetAccessRules(), and System.Security.AccessControl.CommonObjectSecurity.GetAuditRules().