[This is preliminary documentation and subject to change.]
Returns all PropertyRule objects defined for the current authorization context.
An instance of the PropertyRuleCollection containing property rules with the reuqired property values.
The method enumerates the PropertyRules collection and returns all rules defined for the current authorization context with the values of the IsVisible and IsEnabled property corresponding to the visible and enabled arguments, respectively.
The following example defines a very simple authorization policy and uses assertions to verify the content of the returned PropertyRuleCollection instance:
[Visual Basic]
' One role with only enabled property rules can't be
' non-deterministic.
Dim policy As AuthorizationPolicy = New AuthorizationPolicy()
' Our sole role - the DynamicRole with everyone being member
AuthorizationPolicy.Roles.Add(New DynamicRole("User",True))
' One default state.
AuthorizationPolicy.States.AddNew("Default")
' Two properties.
AuthorizationPolicy.Properties.AddNew("Title")
AuthorizationPolicy.Properties.AddNew("Content")
' Each property is enabled and visible (by default).
AuthorizationPolicy.PropertyRules.AddNew("Title", "User")
AuthorizationPolicy.PropertyRules.AddNew("Content", "User")
' Any visible and enabled options - return all rules.
Dim rules As PropertyRuleCollection = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any,EnabledOption.Any)
Assert.AreEqual(2, rules.Count)
' Only visible and enabled options - all rules again.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Visible, EnabledOption.Enabled)
Assert.AreEqual(2, rules.Count)
' Invisible, don't care aboud Enabled - none.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.NotVisible, EnabledOption.Any)
Assert.AreEqual(0, rules.Count)
' Disabled, don't care about visibility.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.NotEnabled)
Assert.AreEqual(0, rules.Count)
'
' Now make the Title property not visible and test.
'
AuthorizationPolicy.PropertyRules.Lookup("Title", "User", "Default").IsVisible = False
' Any option - all rules should be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.Any)
Assert.AreEqual(2, rules.Count)
' Only visible and enabled options - Title(User) [Default: false, true] not returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Visible, EnabledOption.Enabled)
Assert.AreEqual(1, rules.Count)
Assert.AreEqual("Content", rules(0).Property.Id)
Assert.AreSame(AuthorizationPolicy.Properties("Content"), rules(0).Property)
' Invisible, don't care aboud Enabled - the Tile(User) [Default: false, true] should
' be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.NotVisible, EnabledOption.Any)
Assert.AreEqual(1, rules.Count)
Assert.AreEqual("Title", rules(0).Property.Id)
Assert.AreSame(AuthorizationPolicy.Properties("Title"), rules(0).Property)
' Disabled, don't care about visibility - none.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.NotEnabled)
Assert.AreEqual(0, rules.Count)
'
' Now make the Content property disabled and test.
' (The Title is now not visible, the Content is now disabled).
AuthorizationPolicy.PropertyRules.Lookup("Content", "User", "Default").IsEnabled = False
' Any option - all rules should be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.Any)
Assert.AreEqual(2, rules.Count)
' Only visible and enabled options - none returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Visible, EnabledOption.Enabled)
Assert.AreEqual(0, rules.Count)
' Invisible, don't care aboud Enabled - the Tile(User) [Default: false, true] should
' be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.NotVisible, EnabledOption.Any)
Assert.AreEqual(1, rules.Count)
Assert.AreEqual("Title", rules(0).Property.Id)
Assert.AreSame(AuthorizationPolicy.Properties("Title"), rules(0).Property)
' Disabled, don't care about visibility - Content.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.NotEnabled)
Assert.AreEqual(1, rules.Count)
Assert.AreEqual("Content", rules(0).Property.Id)
Assert.AreSame(AuthorizationPolicy.Properties("Content"), rules(0).Property)
[C#]
// One role with only enabled property rules can't be
// non-deterministic.
AuthorizationPolicy policy = new AuthorizationPolicy();
// Our sole role - the DynamicRole with everyone being member
AuthorizationPolicy.Roles.Add(new DynamicRole("User", true));
// One default state.
AuthorizationPolicy.States.AddNew("Default");
// Two properties.
AuthorizationPolicy.Properties.AddNew("Title");
AuthorizationPolicy.Properties.AddNew("Content");
// Each property is enabled and visible (by default).
AuthorizationPolicy.PropertyRules.AddNew("Title", "User");
AuthorizationPolicy.PropertyRules.AddNew("Content", "User");
// Any visible and enabled options - return all rules.
PropertyRuleCollection rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.Any);
Assert.AreEqual(2, rules.Count);
// Only visible and enabled options - all rules again.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Visible, EnabledOption.Enabled);
Assert.AreEqual(2, rules.Count);
// Invisible, don't care aboud Enabled - none.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.NotVisible, EnabledOption.Any);
Assert.AreEqual(0, rules.Count);
// Disabled, don't care about visibility.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.NotEnabled);
Assert.AreEqual(0, rules.Count);
//
// Now make the Title property not visible and test.
//
AuthorizationPolicy.PropertyRules.Lookup("Title", "User", "Default").IsVisible = false;
// Any option - all rules should be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.Any);
Assert.AreEqual(2, rules.Count);
// Only visible and enabled options - Title(User) [Default: false, true] not returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Visible, EnabledOption.Enabled);
Assert.AreEqual(1, rules.Count);
Assert.AreEqual("Content", rules[0].Property.Id);
Assert.AreSame(AuthorizationPolicy.Properties["Content"], rules[0].Property);
// Invisible, don't care aboud Enabled - the Tile(User) [Default: false, true] should
// be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.NotVisible, EnabledOption.Any);
Assert.AreEqual(1, rules.Count);
Assert.AreEqual("Title", rules[0].Property.Id);
Assert.AreSame(AuthorizationPolicy.Properties["Title"], rules[0].Property);
// Disabled, don't care about visibility - none.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.NotEnabled);
Assert.AreEqual(0, rules.Count);
//
// Now make the Content property disabled and test.
// (The Title is now not visible, the Content is now disabled).
AuthorizationPolicy.PropertyRules.Lookup("Content", "User", "Default").IsEnabled = false;
// Any option - all rules should be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.Any);
Assert.AreEqual(2, rules.Count);
// Only visible and enabled options - none returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Visible, EnabledOption.Enabled);
Assert.AreEqual(0, rules.Count);
// Invisible, don't care aboud Enabled - the Tile(User) [Default: false, true] should
// be returned.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.NotVisible, EnabledOption.Any);
Assert.AreEqual(1, rules.Count);
Assert.AreEqual("Title", rules[0].Property.Id);
Assert.AreSame(AuthorizationPolicy.Properties["Title"], rules[0].Property);
// Disabled, don't care about visibility - Content.
rules = AuthorizationPolicy.GetDefinedPropertyRules(VisibleOption.Any, EnabledOption.NotEnabled);
Assert.AreEqual(1, rules.Count);
Assert.AreEqual("Content", rules[0].Property.Id);
Assert.AreSame(AuthorizationPolicy.Properties["Content"], rules[0].Property);
AuthorizationPolicy Class | LaMarvin.Constable Namespace | VisibleOption | EnabledOption