Constable Authorization Engine 2.0 BETA

AuthorizationPolicy.GetDefinedPropertyRules Method 

[This is preliminary documentation and subject to change.]

Returns all PropertyRule objects defined for the current authorization context.

[Visual Basic]
Overridable Public Function GetDefinedPropertyRules( _
   ByVal visible As VisibleOption, _
   ByVal enabled As EnabledOption _
) As PropertyRuleCollection
[C#]
public virtual PropertyRuleCollection GetDefinedPropertyRules(
   VisibleOption visible,
   EnabledOption enabled
);

Parameters

visible
The required value for the IsVisible property for the returned objects.
enabled
The required value for the IsEnabled property for the returned objects.

Return Value

An instance of the PropertyRuleCollection containing property rules with the reuqired property values.

Remarks

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.

Example

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);

See Also

AuthorizationPolicy Class | LaMarvin.Constable Namespace | VisibleOption | EnabledOption