[PEAK] peak.security
    darryl 
    developer at csrules.dyndns.org
       
    Fri Dec  5 17:30:24 EST 2003
    
    
  
Given all the content in your very detailed and expressive message i 
came up with the following:
----------------------------------------------------------------------------------------------
# peak imports
from peak.api import *
class Owner(security.Permission):
    pass
class Building(object):
    security.allow(
        burnBuilding = Owner
        )
    def burnBuilding(self):
        print "burn baby burn!"
class BuildingRules(security.RuleSet):
    rules = Items(
        checkCanBurn = [Owner.of(Building)]
        )
    def checkCanBurn(self, attempt):
        return attempt.user is attempt.subject.owner
BuildingRules.declareRulesFor(security.IPermissionChecker)
class MyBuildingInteraction(security.Interaction):
    user = None
    permissionProtocol = security.IPermissionChecker
----------------------------------------------------------------------------------------------
 From the handy python prompt:
 >>> from security_test import *
 >>> myHouse=Building()
 >>> Maniac = Owner()
 >>> myHouse.owner = Maniac
 >>> theInteraction=MyBuildingInteraction(user=Maniac)
 >>>allowed = theInteraction.allows(myHouse,"burnBuilding")
 >>> if allowed:
...     myHouse.burnBuilding()
...
burn baby burn!
Am i getting close?
    
    
More information about the PEAK
mailing list