I'm evaluatind multiple logins using the normal auth form + janrain in
web2py 1.99.4
It's working almost as I was expecting, but when I do the following steps:

1) login with janrain (in my case using google)
2) I'm sucessfully logged in my app.
    I go to /myap/default/user/change_password and cannot change my pass
    because I don't have one yet to fill the "old password" field.
3) I got to appadmin and setup a pass for my user
4) I logout and login using my email/pass in auth form. It works
5) Now I logout and login using janrain and my previous password was blanked


I try to debug it and found that in step 5 the pass is being blanked
in gluon/tools.py:

    def get_or_create_user(self, keys):
        (...)
        if user:
            print table_user, keys
            user.update_record(**table_user._filter_fields(keys))
        (...)

I added a print statement and it gives me:

auth_user {'first_name': u'Ricardo',
                'last_name': u'Pedroso',
                'registration_id': u'https://www.google.com/profiles/....',
                'password': None,
                'registration_key': '',
                'email': u'em...@example.com'}

Note that the 'registration_id' and 'email' fields are not the ones I
get, I just edit them to post here.

The field that matters for this case is the 'password': None.

Is where my pass is being blanked, right?
Can this be avoid?
Does it makes sense to popup the password field if it's None from the dict?

A more general question, does it make sense to use auth form+janrain?

The code I'm using that is different from the scaffold app:

models/db.py:
--------------------
(....)

auth.define_tables()

from gluon.contrib.login_methods.rpx_account import RPXAccount
from gluon.contrib.login_methods.extended_login_form import ExtendedLoginForm

other_form = RPXAccount(request,
    api_key='mykey',
    domain='mydomain',
    url = "http://localhost:8000/%s/default/user/login"; % request.application)

auth.settings.login_form = ExtendedLoginForm(auth, other_form,
signals=['token'])

(...)

-----------------------------------------------------------------------------------------------------------------------


Regards,
Ricardo

Reply via email to