I'm using an Enum decorated with [Flags] to control autoization within my MVC2 app. Below is my code examples:
[Flags]
public enum SecurityRoles
{
None = 0,
Executive = 1,
BackOffice = 2,
AccountManager = 4,
Consultant = 8,
Administrator = 16
}
[TestMethod]
public void MultipleSelectionsTest()
{
var requiredRoles = SecurityRoles.Executive | SecurityRoles.BackOffice;
var user1Roles = SecurityRoles.Executive | SecurityRoles.Administrator | SecurityRoles.BackOffice | SecurityRoles.Consultant;
var user1HasAccess = user1Roles.HasFlag(requiredRoles);
var user2Roles = SecurityRoles.Administrator | SecurityRoles.BackOffice | SecurityRoles.Consultant;
var user2HasAccess = user2Roles.HasFlag(requiredRoles);
Assert.IsTrue(user1HasAccess); //returns true
Assert.IsTrue(user2HasAccess); //returns false
}
As you can see, user2Roles containes BackOffice role and requiredRoles also contains BackOffice role, however, user2HasAccess is false. Why is that? What am I missing? user1HasAccess is true.