//
// System.Security.AccessControl.CommonObjectSecurity implementation
//
-// Author:
+// Authors:
// Dick Porter <dick@ximian.com>
+// Atsushi Enomoto <atsushi@ximian.com>
//
-// Copyright (C) 2005, 2006 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2005-2007 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-#if NET_2_0
+using System.Collections.Generic;
namespace System.Security.AccessControl {
[MonoTODO ("required for NativeObjectSecurity - implementation is missing")]
public abstract class CommonObjectSecurity : ObjectSecurity {
- protected CommonObjectSecurity ()
- {
- /* Give it a 0-param constructor */
- }
-
+
protected CommonObjectSecurity (bool isContainer)
+ : base (isContainer, false)
{
}
+ List<AccessRule> access_rules = new List<AccessRule> ();
+ List<AuditRule> audit_rules = new List<AuditRule> ();
+
public AuthorizationRuleCollection GetAccessRules (bool includeExplicit, bool includeInherited, Type targetType)
{
throw new NotImplementedException ();
throw new NotImplementedException ();
}
+ // Access
+
protected void AddAccessRule (AccessRule rule)
{
- throw new NotImplementedException ();
+ access_rules.Add (rule);
+ AccessRulesModified = true;
}
- protected void AddAuditRule (AuditRule rule)
+ protected bool RemoveAccessRule (AccessRule rule)
{
throw new NotImplementedException ();
}
- protected override bool ModifyAccess (AccessControlModification modification, AccessRule rule, out bool modified)
+ protected void RemoveAccessRuleAll (AccessRule rule)
{
throw new NotImplementedException ();
}
- protected override bool ModifyAudit (AccessControlModification modification, AuditRule rule, out bool modified)
+ protected void RemoveAccessRuleSpecific (AccessRule rule)
{
throw new NotImplementedException ();
}
- protected bool RemoveAccessRule (AccessRule rule)
+ protected void ResetAccessRule (AccessRule rule)
{
throw new NotImplementedException ();
}
- protected void RemoveAccessRuleAll (AccessRule rule)
+ protected void SetAccessRule (AccessRule rule)
{
throw new NotImplementedException ();
}
- protected void RemoveAccessRuleSpecific (AccessRule rule)
+ protected override bool ModifyAccess (AccessControlModification modification, AccessRule rule, out bool modified)
{
- throw new NotImplementedException ();
+ foreach (AccessRule r in access_rules) {
+ if (rule != r)
+ continue;
+ switch (modification) {
+ case AccessControlModification.Add:
+ AddAccessRule (rule);
+ break;
+ case AccessControlModification.Set:
+ SetAccessRule (rule);
+ break;
+ case AccessControlModification.Reset:
+ ResetAccessRule (rule);
+ break;
+ case AccessControlModification.Remove:
+ RemoveAccessRule (rule);
+ break;
+ case AccessControlModification.RemoveAll:
+ RemoveAccessRuleAll (rule);
+ break;
+ case AccessControlModification.RemoveSpecific:
+ RemoveAccessRuleSpecific (rule);
+ break;
+ }
+ modified = true;
+ return true;
+ }
+ modified = false;
+ return false;
+ }
+
+ // Audit
+
+ protected void AddAuditRule (AuditRule rule)
+ {
+ audit_rules.Add (rule);
+ AuditRulesModified = true;
}
protected bool RemoveAuditRule (AuditRule rule)
throw new NotImplementedException ();
}
- protected void ResetAccessRule (AccessRule rule)
- {
- throw new NotImplementedException ();
- }
-
- protected void SetAccessRule (AccessRule rule)
+ protected void SetAuditRule (AuditRule rule)
{
throw new NotImplementedException ();
}
- protected void SetAuditRule (AuditRule rule)
+ protected override bool ModifyAudit (AccessControlModification modification, AuditRule rule, out bool modified)
{
- throw new NotImplementedException ();
+ foreach (AuditRule r in audit_rules) {
+ if (rule != r)
+ continue;
+ switch (modification) {
+ case AccessControlModification.Add:
+ AddAuditRule (rule);
+ break;
+ case AccessControlModification.Set:
+ SetAuditRule (rule);
+ break;
+ //case AccessControlModification.Reset:
+ // ResetAuditRule (rule);
+ // break;
+ case AccessControlModification.Remove:
+ RemoveAuditRule (rule);
+ break;
+ case AccessControlModification.RemoveAll:
+ RemoveAuditRuleAll (rule);
+ break;
+ case AccessControlModification.RemoveSpecific:
+ RemoveAuditRuleSpecific (rule);
+ break;
+ }
+ AuditRulesModified = true;
+ modified = true;
+ return true;
+ }
+ modified = false;
+ return false;
}
}
}
-#endif