On Jul 16, 2009, at 6:35 AM, Jonathan Lundell wrote:

>
> On Jul 16, 2009, at 6:18 AM, mdipierro wrote:
>
>>
>> web2py validates the URL and does allow the @ sign in the URL, only
>> alphanumaric characters, _, - and non-consecutive . and /.
>
> Did you mean "does not allow"? Shouldn't the validation be more
> generous in the args section? There's nothing wrong with this as an
> http URL:
>
> http://localhost:8000/init/default/json_read_nologin/user%40domain.com
>
> (Where does the validation happen?)

OK, that last was a dumb question, since I just finished reformatting  
regex_url.

So here's the validation for args: ([\w\-][\=\./]?)+

I don't want to make a proposal here, since I have no idea what args  
consumers are assuming for validation. But it does seem reasonable in  
the abstract to allow a little more than this pattern permits.

(And I could see piggybacking on the IS_HTTP_URL validator for the  
first cut.)

>
>>
>> On Jul 16, 2:07 am, David Watson <[email protected]> wrote:
>>> I'm using web2py 1.65.5 with google app engine.
>>>
>>> I've run into a problem with request.args in relation to my json
>>> calls:
>>>
>>> @service.json
>>> def json_read_nologin():
>>>    return request.args[0]
>>>
>>> or the same function defined sans the service decorator, both work
>>> fine, as long as I don't pass something containing an @ sign, i.e.
>>>
>>> http://localhost:8000/init/default/json_read_nologin/[email protected]
>>>
>>> this generates an invalid request even if url encoded:
>>>
>>> http://localhost:8000/init/default/json_read_nologin/user
>>> %40domain.com
>>>
>>> I'm not sure what I'm doing wrong here but this behavior doesn't  
>>> seem
>>> like what I'd expect.
>>>
>>> Thanks,
>>> David
>>>
>>> On Jun 23, 8:47 pm, mdipierro <[email protected]> wrote:
>>>
>>>> You cannot mix authorization and services this way. It is
>>>> complicated
>>>> an there are many cases....
>>>
>>>> If you have
>>>
>>>> @auth.requires_login()
>>>> def acceptme():
>>>>    return 'accepted'
>>>
>>>> you can call "http://..../acceptme.json"; and you will get aJSON
>>>> response. You do not need the decorator.
>>>
>>>> @auth.requires_login()
>>>> @service.json()
>>>> def acceptme():
>>>>    return 'accepted'
>>>> def run(): return service()
>>>
>>>> exposes "http://..../service/json/acceptme"; before requiring login.
>>>
>>>> @service.json()
>>>> def acceptme():
>>>>    return 'accepted'
>>>> @auth.requires_login()
>>>> def run(): return service()
>>>
>>>> this should work but will require login for all services
>>>
>>>> @service.json()
>>>> @auth.requires_login()
>>>> def acceptme():
>>>>    return 'accepted'
>>>> def run(): return service()
>>>
>>>> this is not completely clear to me why does not work but I see some
>>>> logical problems.
>>>
>>>> Massimo
>>>
>>>> On Jun 23, 7:31 pm, Hasanat Kazmi <[email protected]> wrote:
>>>
>>>>> Here is an interesting behavior.
>>>>> i have following function
>>>
>>>>> @auth.requires_login()
>>>>> @service.json
>>>>> @service.jsonrpc
>>>>> def acceptme():
>>>>>    return "accepted"
>>>
>>>>> in this case, whatever username and password I give, I get  
>>>>> returned
>>>>> "accepted" but if I put @auth.requires_login() after
>>>>> @service.jsonrpc,
>>>>> it always returns me "Object does not exist" .
>>>
>>>>> I call it like 
>>>>> this:http://hasanatkazmi%40gmail.com:**...@localhost:8000/sahana/admin/cal
>>>>> ...
>>>
>>>>> Anyone has an idea whats going on?
>>>
>>>>> On Jun 4, 7:28 am, Alexei Vinidiktov <[email protected]>
>>>>> wrote:
>>>
>>>>>> I've tried this with the pyjamas tutorial and it didn't work.  
>>>>>> I've
>>>>>> enabled user registration and registered a user whose
>>>>>> credentials are
>>>>>> used in the URL below. I got a server error when a function
>>>>>> requiring
>>>>>> user authentication was called.
>>>
>>>>>> I changed the line
>>>
>>>>>> JSONProxy.__init__(self, "../../default/call/jsonrpc",
>>>>>> ["getTasks",
>>>>>> "addTask","deleteTask"])
>>>
>>>>>> to read
>>>
>>>>>> JSONProxy.__init__(self,
>>>>>> "http://myemail%40gmail.com%[email protected]:8000/pyjamas/defaul
>>>>>> ...",
>>>>>> ["getTasks", "addTask","deleteTask"])
>>>
>>>>>> What am I missing?
>>>
>>>>>> Thanks.
>>>
>>>>>> On Mon, Jun 1, 2009 at 12:51 PM, mdipierro
>>>>>> <[email protected]> wrote:
>>>
>>>>>>> OK. As you request since the latest version in trunk you can do
>>>
>>>>>>> @auth.requires_login()
>>>>>>> def index(): return 'hello world'
>>>
>>>>>>> and access it with
>>>
>>>>>>>  curl -u username:passwordhttp://127.0.0.1:8000/app/default/
>>>>>>> index
>>>
>>>>>>> or
>>>
>>>>>>>  curlhttp://username:[email protected]:8000/app/default/index
>>>
>>>>>>> In the latter case username and password have to be encoded by
>>>>>>> urllib.quote()
>>>
>>>>>>> works for services too.
>>>
>>>>>>> Massimo
>>>
>>>>>>> On May 31, 10:43 pm, Dan <[email protected]> wrote:
>>>>>>>> Since my last message on this thread, I came up with a patch
>>>>>>>> to the
>>>>>>>> Auth.login() code that lets me do what I need, so figured I
>>>>>>>> should
>>>>>>>> post it here. Let me know if you see any issues with this
>>>>>>>> approach (or
>>>>>>>> improvements to it).
>>>
>>>>>>>> To recap, what I want to do is to let a script runing wget
>>>>>>>> (not a
>>>>>>>> browser)loginand then work with some parts of the app that
>>>>>>>> require
>>>>>>>> membership in groups. I want to pass the user's name and
>>>>>>>> password to
>>>>>>>> theloginformusing post variables in the URL. This is not
>>>>>>>> normally
>>>>>>>> possible with web2py'sAuth.login() function, so it needs to be
>>>>>>>> modified, like this-
>>>
>>>>>>>> referring to source code 
>>>>>>>> here:http://www.web2py.com/examples/static/epydoc/web2py.gluon.tools-pysrc
>>>>>>>> ...
>>>>>>>> Change these 3 lines ...
>>>>>>>> 622          ifFORM.accepts(form, request.vars, session,
>>>>>>>> 623                          formname='login',
>>>>>>>> 624                          onvalidation=onvalidation):
>>>
>>>>>>>> ... to be these 3 lines:
>>>>>>>> if username in request.vars.keys() and request.vars.password
>>>>>>>> and \
>>>>>>>>       FORM.accepts(form, request.vars,
>>>>>>>>            formname=None, onvalidation=onvalidation):
>>>
>>>>>>>> This change lets theformtake the username and password from the
>>>>>>>> URL's post variables (or theformitself - but not both of
>>>>>>>> course).
>>>>>>>> Then my script willloginusing wget's optional arguments "-- 
>>>>>>>> keep-
>>>>>>>> session-cookies --save-cookies=" when submitting the user name
>>>>>>>> and
>>>>>>>> password to the app'sloginfunction. These wget options store  
>>>>>>>> the
>>>>>>>> session cookie in a local file. Then subsequent wget calls to
>>>>>>>> the
>>>>>>>> restricted parts of the app can use those cookies as a token
>>>>>>>> to gain
>>>>>>>> access with the option "--load-cookies=".
>>>
>>>>>>>> Apologies for straying a bit from the original use case of this
>>>>>>>> thread, but perhaps it's general approach will be a helpful
>>>>>>>> hint.
>>>
>>>>>>>> Also: I don't fully understand what the purpose of the
>>>>>>>> "formname"
>>>>>>>> parameter is, or why it was necessary to None-ify it. If
>>>>>>>> someone can
>>>>>>>> explain this to me, I'd appreciate it.
>>>
>>>>>>>> Dan
>>>
>>>>>>>> On May 29, 6:15 pm, Dan <[email protected]> wrote:
>>>
>>>>>>>>> Reviving this thread from before... I would like to have a
>>>>>>>>> shell
>>>>>>>>> script use wget to authenticate itself and access the data in
>>>>>>>>> a web2py
>>>>>>>>> application, but I haven't been able to get the web2py app to
>>>>>>>>> accept
>>>>>>>>> the post'ed email and password information, which I sent to
>>>>>>>>> the user/
>>>>>>>>> loginURL. Is this the right way to do it?
>>>
>>>>>>>>> I see some passing references to alternate authorization
>>>>>>>>> methods in
>>>>>>>>> the documentation and the code, but I haven't been able to
>>>>>>>>> get much
>>>>>>>>> detail on what those might be. For example-
>>>
>>>>>>>>> http://mdp.cti.depaul.edu/examples/default/
>>>>>>>>> tools#authentication:
>>>>>>>>> "TheAuthcalls can be extended, personalized, and replaced by
>>>>>>>>> other
>>>>>>>>> authentication mechanisms which expose a similar interface."
>>>
>>>>>>>>> and 
>>>>>>>>> inhttp://mdp.cti.depaul.edu/examples/static/epydoc/web2py.gluon.tools-p
>>>>>>>>> ...
>>>>>>>>> :
>>>>>>>>> 644              if not user:
>>>>>>>>> 645                  ## try alternateloginmethods
>>>>>>>>> 646                  for login_method in
>>>>>>>>> self.settings.login_methods:
>>>>>>>>> 647                      if login_method != self and \
>>>>>>>>> 648                              login_method(request.vars
>>>>>>>>> [username],
>>>>>>>>> 649
>>>>>>>>> request.vars.password):
>>>>>>>>> 650                          user = self.get_or_create_user
>>>>>>>>> (form.vars)
>>>
>>>>>>>>> Is there a place where I can find out more about what already
>>>>>>>>> exists,
>>>>>>>>> or how to go about getting something like what the original
>>>>>>>>> message in
>>>>>>>>> this thread described?
>>>
>>>>>>>>> Dan
>>>
>>>>>>>>> On May 17, 8:22 pm, mdipierro <[email protected]> wrote:
>>>
>>>>>>>>>> I need to look into this. I do not think there can be a
>>>>>>>>>> generic
>>>>>>>>>> approach. Each protocol has its own quirks and some do not
>>>>>>>>>> handle
>>>>>>>>>> session or authenication.
>>>
>>>>>>>>>> Massimo
>>>
>>>>>>>>>> On May 17, 8:14 pm, jcorbett <[email protected]> wrote:
>>>
>>>>>>>>>>> I love the service framework, however I am interested in
>>>>>>>>>>> being able to
>>>>>>>>>>> authenticate users.  Withjson/jsonrpcthis shouldn't be too
>>>>>>>>>>> hard as
>>>>>>>>>>> the browser that the ajax request would come from would
>>>>>>>>>>> have the same
>>>>>>>>>>> session.
>>>
>>>>>>>>>>> Particularly I am concerned with writing an xmlrpc service
>>>>>>>>>>> that
>>>>>>>>>>> requires authentication.  TheAuthclass doesn't seem to
>>>>>>>>>>> expose any of
>>>>>>>>>>> the lower level logic for authentication (like
>>>>>>>>>>> aloginfunction that
>>>>>>>>>>> takes a username and a password).  Any ideas on how I can
>>>>>>>>>>> do this.
>>>>>>>>>>> I'm not afraid of writing my own implimentation, however I
>>>>>>>>>>> would love
>>>>>>>>>>> to piggy back off what is already there.
>>>
>>>>>>>>>>> I would figure I would want to have aloginfunction that
>>>>>>>>>>> would create
>>>>>>>>>>> a session key (limited lifetime), and each function would
>>>>>>>>>>> be required
>>>>>>>>>>> to provide that key.
>>>
>>>>>>>>>>> Any ideas would be appreciated.
>>>
>>>>>>>>>>> Jason Corbett
>>>>>>>>>>> BTW I love the simplicity of web2py, it took me maybe 2-3
>>>>>>>>>>> hours to
>>>>>>>>>>> write a simple app that was even themed.
>>>
>>>>>> --
>>>>>> Alexei Vinidiktov
>>>
>
>
>
> >



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to