should clear local perm cache if first attempt failed 3.0
authorsylvain.thenault@logilab.fr
Tue, 27 Jan 2009 13:51:49 +0100
branch3.0
changeset 475 b32a5772ff06
parent 458 99712f0d5472
child 476 62968fa8845c
should clear local perm cache if first attempt failed
common/entity.py
server/securityhooks.py
--- a/common/entity.py	Fri Jan 23 15:51:24 2009 +0100
+++ b/common/entity.py	Tue Jan 27 13:51:49 2009 +0100
@@ -391,6 +391,10 @@
         res['source'] = self.req.source_defs()[res['source']]
         return res
 
+    def clear_local_perm_cache(self, action):
+        for rqlexpr in self.e_schema.get_rqlexprs(action):
+            self.req.local_perm_cache.pop((rqlexpr.eid, (('x', self.eid),)), None)
+
     def check_perm(self, action):
         self.e_schema.check_perm(self.req, action, self.eid)
 
--- a/server/securityhooks.py	Fri Jan 23 15:51:24 2009 +0100
+++ b/server/securityhooks.py	Tue Jan 27 13:51:49 2009 +0100
@@ -54,6 +54,7 @@
             entity.check_perm('update')
             check_entity_attributes(session, entity)
         except Unauthorized:
+            entity.clear_local_perm_cache('update')
             CheckEntityPermissionOp(session, entity=entity, action='update')
         
 def before_del_entity(session, eid):