Or an easier option is to use the 
auth.get_or_create_user()<http://code.google.com/p/web2py/source/browse/gluon/tools.py#1704>method,
 though that doesn't provide the password verification 
field/validation that the auth.register() function includes (which you may 
not want anyway).

Anthony

On Wednesday, January 23, 2013 11:45:15 PM UTC-5, Anthony wrote:
>
> You might consider looking at the auth.register() code: 
> http://code.google.com/p/web2py/source/browse/gluon/tools.py#2168
>
> Another option might be to generate an auth.register() form and send the 
> formkey to the client to be passed back as a hidden field in the POST call. 
> You can then let the web2py auth.register() function handle the 
> registration as usual.
>
> If you use a web2py view to create the register form, you can do:
>
> <input name="_formkey" type="hidden" value="{{=auth.register().formkey}}" 
> />
> <input name="_formname" type="hidden" value="register" />
>
> Otherwise, you can make an Ajax request to get a formkey:
>
> def get_formkey():
>     return auth.register().formkey
>
> That will put the formkey in the session, and when the form is submitted, 
> the submitted formkey value will be compared to the value in the session. 
> Note, you also need to send a "_formname" field with the value "register".
>
> Your register function could then be:
>
> def register():
>     auth.register()
>     return 'An error occurred'
>
> Note, by default, if the registration is accepted, that will do a 
> client-side redirect to auth.settings.register_next (assuming web2py.js is 
> loaded in the client). If you don't want a redirect, you can define an 
> onaccept function that raises an HTTP 
> exception<http://web2py.com/books/default/chapter/29/04#HTTP-and-redirect>in 
> order to return a string:
>
> def register():
>     def success(form):
>         raise HTTP(200, 'Success')
>     auth.register(onaccept=success)
>     return 'An error occurred'
>
> This is untested, so I may have missed something.
>
> Anthony
>
> On Wednesday, January 23, 2013 6:11:26 PM UTC-5, Mark Li wrote:
>>
>> I have decided to use validate_and_insert with web2py's REST methods
>>
>> db.auth_user.validate_and_insert(**fields)
>>
>> Testing so far, I was able to add a user even though the email and 
>> password fields were empty in the POST call. I altered my api action so 
>> that it checks whether or not the email and password fields in the request 
>> are empty. All other validators seem to be working fine.
>>
>> If anyone has previous experience with validate_and_insert with the 
>> auth_user table, and knows of any registration holes this way, please let 
>> me know!
>>
>>
>> On Tuesday, January 22, 2013 6:50:06 PM UTC-8, Mark Li wrote:
>>>
>>> I am currently using web2py's auth to return a registration form.
>>>
>>> However, I would also like users to be able to register RESTfully, with 
>>> the email and password information in a POST call. How would I write a 
>>> register action that mimics auth.register(), except the information is from 
>>> a POST, not a form.
>>>
>>

-- 



Reply via email to