Hi Brad,

У уто, 06. 09 2011. у 08:32 -0400, Brad Crittenden пише:
> Last week I fixed a bug[1] that was caused by one of the security adapters 
> delegating to another one by explicitly naming it.  Unfortunately the named 
> one was not appropriate.  The fix was to not hard-code the adapter but to use 
> getAdapter to let the machinery find the correct one.
> 
> After fixing that single instance Francis asked that I look at all of the 
> places we do something similar in our various security.py files.  There were 
> many.  I opened [2] to track fixing them.
> 
> It is a common pattern for one object to defer to a child object's security 
> adapter, e.g. the security rules for viewing a bug attachment are the same as 
> for the associated bug, so the security adapter for the bug attachment 
> forwards to the adapter for the bug.
> 
> To remove the hard-coded names and facilitate this pattern of forwarding via 
> lookup I created a new base class called ForwardedAuthorization.
> 
> Here is a diff of the change to use the new class.  It shows forwarding to 
> the child 'archive' and using a different permission, 'launchpad.Append' 
> instead of the original 'launchpad.Edit'.  The permission is optional and 
> should be omitted if it is the same as the original.
> 
> 284   -class EditPublishing(AuthorizationBase):
> 285   +class EditPublishing(ForwardedAuthorization):
> 286        """Restrict editing of source and binary packages.."""
> 287        permission = "launchpad.Edit"
> 288        usedfor = IPublishingEdit
> 289    
> 290   -    def checkAuthenticated(self, user):
> 291   -        return AppendArchive(self.obj.archive).checkAuthenticated(user)
> 292   +    def __init__(self, obj):
> 293   +        super(EditPublishing, self).__init__(obj.archive, 
> 'launchpad.Append')
> 294    
> 
> Please use this new class when you need to follow the forwarding pattern.  My 
> branch should land today.

How does this relate to the forwardCheckAuthenticated Henning (I think)
implemented a while back?  Is it not the same thing, essentially?

Cheers,
Danilo



_______________________________________________
Mailing list: https://launchpad.net/~launchpad-dev
Post to     : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to