Mercurial > hg
diff hgext/largefiles/uisetup.py @ 36800:0b18604db95e
wireproto: declare permissions requirements in @wireprotocommand (API)
With the security patches from 4.5.2 merged into default, we now
have a per-command attribute defining what permissions are needed
to run that command. We now have a richer @wireprotocommand that
can be extended to record additional command metadata. So we
port the permissions mechanism to be based on @wireprotocommand.
.. api::
hgweb_mod.perms and wireproto.permissions have been removed. Wire
protocol commands should declare their required permissions in the
@wireprotocommand decorator.
Differential Revision: https://phab.mercurial-scm.org/D2718
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 07 Mar 2018 16:02:24 -0800 |
parents | 7bf80d9d9543 |
children | 45b39c69fae0 |
line wrap: on
line diff
--- a/hgext/largefiles/uisetup.py Tue Mar 06 15:08:33 2018 -0800 +++ b/hgext/largefiles/uisetup.py Wed Mar 07 16:02:24 2018 -0800 @@ -164,21 +164,18 @@ overrides.openlargefile) # create the new wireproto commands ... - wireproto.wireprotocommand('putlfile', 'sha')(proto.putlfile) - wireproto.wireprotocommand('getlfile', 'sha')(proto.getlfile) - wireproto.wireprotocommand('statlfile', 'sha')(proto.statlfile) - wireproto.wireprotocommand('lheads', '')(wireproto.heads) + wireproto.wireprotocommand('putlfile', 'sha', permission='push')( + proto.putlfile) + wireproto.wireprotocommand('getlfile', 'sha', permission='pull')( + proto.getlfile) + wireproto.wireprotocommand('statlfile', 'sha', permission='pull')( + proto.statlfile) + wireproto.wireprotocommand('lheads', '', permission='pull')( + wireproto.heads) # ... and wrap some existing ones wireproto.commands['heads'].func = proto.heads - # make putlfile behave the same as push and {get,stat}lfile behave - # the same as pull w.r.t. permissions checks - wireproto.permissions['putlfile'] = 'push' - wireproto.permissions['getlfile'] = 'pull' - wireproto.permissions['statlfile'] = 'pull' - wireproto.permissions['lheads'] = 'pull' - extensions.wrapfunction(webcommands, 'decodepath', overrides.decodepath) extensions.wrapfunction(wireproto, '_capabilities', proto._capabilities)