That's my concern also. I simply would like to make a transparent registration for 2 groups separately. In order to do so I have two different forms generating depending on URL argument: default/register/[group1] or [group2]. Checking request.args(0) on "onaccept" seemed obvious but it needs improvements.
Is it a good idea to check also a specific form id attribute when performing onaccept? How do I check the form id attribute value? Or maybe there's a better way do make sure noone messes with the URL arguments? On Friday, June 7, 2013 3:18:29 AM UTC+2, Anthony wrote: > > Yes, you should not call .process() after calling auth.register() because > the second time through .process() it will fail (the _formkey token is only > good for one process -- so it fails on the second). Using an onaccept > callback is the way to go. However, it appears you are allowing your users > to assign themselves to any arbitrary group simply by manipulating an arg > in the URL -- that doesn't seem like a good idea. > > Anthony > > On Thursday, June 6, 2013 7:56:56 PM UTC-4, lesssugar wrote: >> >> OK, I figured out something like this and it works (let me know if it's >> not correct in any way): >> >> In db.py model: >> >> auth.settings.create_user_groups = False >> >> and then >> >> def add_group(form): >> group_id = auth.id_group(role=request.args(0)) >> auth.add_membership(group_id, form.vars.id) >> >> auth.settings.register_onaccept.append(add_group) >> >> >> >> >> On Friday, June 7, 2013 1:35:41 AM UTC+2, lesssugar wrote: >>> >>> Sorry, there is one more "but". After renaming the form all goes well, >>> except that this piece of code >>> >>> if register_form.accepts(request.vars, formname='register'): >>> auth.add_membership(group_id=1, >>> user_id=register_form.vars.id<http://register_form_s.vars.id> >>> ) >>> >>> no longer adds the right membership to user. It gives them the default >>> group: user_[id], while earlier adding to "group 1" worked properly. >>> >>> On Friday, June 7, 2013 1:11:23 AM UTC+2, Anthony wrote: >>>> >>>> I think the form processing within the auth.register() function is >>>> probably failing because you have renamed the form to 's_registration', >>>> and >>>> it is expecting a form named 'register' (it uses the formname to check the >>>> _formkey value in the session). If the form doesn't get accepted, it >>>> doesn't get to the redirect logic. >>>> >>>> Anthony >>>> >>>> On Thursday, June 6, 2013 6:59:51 PM UTC-4, lesssugar wrote: >>>>> >>>>> Right, thanks. But what about the "next" attribute? What might be the >>>>> reason of the argument not working? >>>>> >>>>> On Friday, June 7, 2013 12:53:35 AM UTC+2, Anthony wrote: >>>>>> >>>>>> auth.register() automatically processes the form, so you should not >>>>>> subsequently call request_form.process(). >>>>>> >>>>>> Anthony >>>>>> >>>>>> On Thursday, June 6, 2013 6:21:52 PM UTC-4, lesssugar wrote: >>>>>>> >>>>>>> After user registers, I would like to redirect them to a different >>>>>>> URL, let's say default/index. >>>>>>> >>>>>>> Auto-login in db.py is set to False. >>>>>>> >>>>>>> In my default.py controller I have this: >>>>>>> >>>>>>> register_form = auth.register(next=URL('default', 'index')) >>>>>>> register_form.update(_class='formstyle', _name='s_registration') >>>>>>> if register_form.process().accepts(request.vars, >>>>>>> formname='s_registration'): >>>>>>> auth.add_membership(group_id=1, >>>>>>> user_id=register_form.vars.id<http://register_form_s.vars.id> >>>>>>> ) >>>>>>> >>>>>>> return dict(register_form=register_form) >>>>>>> >>>>>>> So after user registers, no redirection takes place. However, the >>>>>>> registration itself is correct (checked auth_user and auth_membership >>>>>>> in >>>>>>> the DB). >>>>>>> >>>>>>> Any suggestions why "next" argument does't get the job done? >>>>>>> >>>>>>> UPDATE: >>>>>>> If I add "redirect(URL('default', 'index'))" in the IF condition >>>>>>> (code above) - all goes fine. What's with the "next" argument then? >>>>>>> >>>>>>> -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.