Please send me a patch! :-)
On Oct 24, 5:52 pm, Hong-Khoan Quach <hongkhoanqu...@googlemail.com> wrote: > Hi, > > I think that is a good starting point for us. Massimo, > if you and you other guys don't mind, we'd like to try to fix this bug. > I already looked into the sourcecode and have an idea but I need to > check this :) . > > Regards > > Hong-Khoan > > Am 24.10.2011 02:48, schrieb Robert Clark: > > > > > > > > > Hi Massimo > > > Here are the steps to reproduce this problem in web2py 1.99.2 (these > > steps worked fine on 1.98.x versions) > > > 1) In web2py admin create "New simple application" called "foo" > > > 2) Add to db.py: > > auth.settings.allow_basic_login = True > > > 3) Decorate call() with @auth.requires_login in default.py: > > > @auth.requires_login() > > def call(): > > ... > > > 4) Add a simple XMLPRC method to default.py: > > > @service.xmlrpc > > def multiply(a=1,b=1): > > return dict(answer=int(a) * int(b)) > > > 5) Register a user with email "bob.sm...@foo.com" password "snowball" > > > 6) From a python shell use ServerProxy to invoke the service > > >> from xmlrpclib import ServerProxy > >> server = > >> ServerProxy('http://bob.sm...@foo.com:snowball@localhost:8000/foo/default/call/xmlrpc', > >> verbose=True) > >> server.multiply(2, 2) > > > ... > > reply: 'HTTP/1.1 303 SEE OTHER\r\n' > > ... > > > Cheers, > > Rob > > > On Oct 22, 2:59 am, Massimo Di Pierro <massimo.dipie...@gmail.com> > > wrote: > >> Can you provide an example to reproduce the problem? > > >> On Oct 21, 12:38 am,RobinMarshall<robin.d.marsh...@gmail.com> > >> wrote: > > >>> Hi, > > >>> Just wanted to say that we found a bug in 1.99.2 when using XMLRPC > >>> services with the @auth.requires_login decorator using basic > >>> authentication. > > >>> It looks like some code was refactored out of requires_login into a > >>> generic requires method which might be the cause of the problem. > > >>> A quick hack was to change the following code, but obviously that > >>> won't work very well for people who aren't using basic authentication. > > >>> def is_logged_in(self): > >>> """ > >>> checks if the user is logged in and returns True/False. > >>> if so user is in auth.user as well as in session.auth.user > >>> """ > >>> if self.user: > >>> return True > >>> return False > > >>> to: > > >>> def is_logged_in(self): > >>> """ > >>> checks if the user is logged in and returns True/False. > >>> if so user is in auth.user as well as in session.auth.user > >>> """ > >>> if self.basic() and self.user: > >>> return True > >>> return False > > >>> Cheers, > >>> Robin > > > > signature.asc > < 1KViewDownload