Authorization DSL
Here is a tidbit that I worked on yesterday for the DSL book:
operation "/account/login"
if Principal.IsInRole("Administrators"):
Allow("Administrators can always log in")
return
if date.Now.Hour < 9 or date.Now.Hour > 17:
Deny("Cannot log in outside of business hours, 09:00 - 17:00")
And another one:
if Principal.IsInRole("Managers"):
Allow("Managers can always approve orders")
return
if Entity.TotalCost >= 10_000:
Deny("Only managers can approve orders of more than 10,000")
Allow("All users can approve orders less than 10,000")
There is no relation to Rhino Security, just to be clear.
I simply wanted a sample for a DSL, and this seems natural enough.