Zope Subversion Repository

  Zope

Zope: Zope3/trunk/src/zope/security/checker.py

Diff for /Zope3/trunk/src/zope/security/checker.py between version 25919 and 25920

version 25919, Mon Jun 21 10:56:49 2004 UTC version 25920, Mon Jun 21 14:04:16 2004 UTC
Line 98 
Line 98 
 class Checker(TrustedCheckerBase):  class Checker(TrustedCheckerBase):
     implements(INameBasedChecker)      implements(INameBasedChecker)
   
     def __init__(self, permission_func,      def __init__(self, get_permissions, set_permissions=None):
                  setattr_permission_func=lambda name: None  
                  ):  
         """Create a checker          """Create a checker
   
         A dictionary or a callable must be provided for computing          A dictionary must be provided for computing permissions for
         permissions for names. The callable will be called with          names. The disctionary get will be called with attribute names
         attribute names and must return a permission id, None, or the          and must return a permission id, None, or the special marker,
         special marker, CheckerPublic. If None is returned, then          CheckerPublic. If None is returned, then access to the name is
         access to the name is forbidden. If CheckerPublic is returned,          forbidden. If CheckerPublic is returned, then access will be
         then access will be granted without checking a permission.          granted without checking a permission.
   
         An optional setattr permission function or dictionary may be          An optional setattr dictionary may be provided for checking
         provided for checking set attribute access.          set attribute access.
         """  
   
         if type(permission_func) is dict:  
             permission_func = permission_func.get  
         self._permission_func = permission_func  
   
         if type(setattr_permission_func) is dict:  
             setattr_permission_func = setattr_permission_func.get  
         self._setattr_permission_func = setattr_permission_func  
   
     def getPermission_func(self):          """
         return self._permission_func  
   
     def getSetattrPermission_func(self):          assert isinstance(get_permissions, dict)
         return self._setattr_permission_func          self.get_permissions = get_permissions
           if set_permissions is not None:
               assert isinstance(set_permissions, dict)
           self.set_permissions = set_permissions
   
     def permission_id(self, name):      def permission_id(self, name):
         'See INameBasedChecker'          'See INameBasedChecker'
         return self._permission_func(name)          return self.get_permissions.get(name)
   
     def setattr_permission_id(self, name):      def setattr_permission_id(self, name):
         'See INameBasedChecker'          'See INameBasedChecker'
         return self._setattr_permission_func(name)          if self.set_permissions:
               return self.set_permissions.get(name)
   
     def check_getattr(self, object, name):      def check_getattr(self, object, name):
         'See IChecker'          'See IChecker'
Line 142 
Line 134 
   
     def check_setattr(self, object, name):      def check_setattr(self, object, name):
         'See IChecker'          'See IChecker'
         permission = self._setattr_permission_func(name)          if self.set_permissions:
               permission = self.set_permissions.get(name)
           else:
               permission = None
   
         if permission is not None:          if permission is not None:
             if permission is CheckerPublic:              if permission is CheckerPublic:
                 return # Public                  return # Public
Line 159 
Line 155 
   
     def check(self, object, name):      def check(self, object, name):
         'See IChecker'          'See IChecker'
         permission = self._permission_func(name)          permission = self.get_permissions.get(name)
         if permission is not None:          if permission is not None:
             if permission is CheckerPublic:              if permission is CheckerPublic:
                 return # Public                  return # Public
Line 410 
Line 406 
             raise DuplicationError(name)              raise DuplicationError(name)
         data[name] = permission_id          data[name] = permission_id
   
     return Checker(data.get)      return Checker(data)
   
 def InterfaceChecker(interface, permission_id=CheckerPublic, **__kw__):  def InterfaceChecker(interface, permission_id=CheckerPublic, **__kw__):
     return NamesChecker(interface.names(all=True), permission_id, **__kw__)      return NamesChecker(interface.names(all=True), permission_id, **__kw__)
Line 449 
Line 445 
                     raise DuplicationError(name)                      raise DuplicationError(name)
                 data[name] = permission_id                  data[name] = permission_id
   
     return Checker(data.get)      return Checker(data)
   
 def selectChecker(object):  def selectChecker(object):
     """Get a checker for the given object      """Get a checker for the given object
Line 527 
Line 523 
   
 _getChecker = _checkers.get  _getChecker = _checkers.get
   
 _defaultChecker = Checker({}.get)  _defaultChecker = Checker({})
   
 def _instanceChecker(inst):  def _instanceChecker(inst):
     checker = _checkers.get(inst.__class__, _defaultChecker)      checker = _checkers.get(inst.__class__, _defaultChecker)


Generate output suitable for use with a patch program
Legend:
Removed from v.25919  
changed lines
  Added in v.25920

webmaster@zope.org

Powered by ViewCVS 1.0-dev
(Powered by Apache)

ViewCVS and CVS Help