Perhaps I misunderstand the workflow. The solution cannot be to change an Auth function to handle a specific custom field.
The proper signature for the function is get_or_create_user(self, keys, update_fields=['email']) so if you want to pass employee_id to keys and expect it to update the record in case it is found you need to pass get_or_create_user(self, keys, update_fields=['email', 'employee_id']) There are two options here: 1) allow some auth.settings.update_fields to be specified so the function is called with right parameters 2) change it so that update_fields defaults to keys.keys() 2) would solve the problem automatically but it may break something. Not sure. Please open a ticket: http://code.google.com/p/web2py/issues/list but let's discuss it some more. Massimo On Tuesday, 8 January 2013 12:09:09 UTC-6, Ignacio Ocampo wrote: > > Yes, > > I only uses: > > auth.settings.login_form=MyAuth( > param1="value1", > param2="value" > ) > > It's all, I never call and writes/update in the auth_user anywhere. > > In gluon/tools.py login function, web2py check if they would use their > login form or from a central source (line 1955) > > At line 2068 web2py determined that central authentication would be used. > > At line 2075 web2py call: user = > self.get_or_create_user(table_user._filter_fields(cas_user)) > > At line 1724, within get_or_create_user function, after that web2py > determine that the user exists: > > *update_keys = dict(registration_id=keys['registration_id']) #here is the > BUG* > > I solved it with: > > *update_keys = dict(registration_id=keys['registration_id'], > employee_id=keys['employee_id'])* > > So, I think that we need to update the gluon/tools.py file, to improve the > update of external fields. > > On Tuesday, January 8, 2013 11:43:44 AM UTC-6, Anthony wrote: >> >> On Tuesday, January 8, 2013 12:08:34 PM UTC-5, Ignacio Ocampo wrote: >> >>> I only return a dict in the get_user, web2py does all the work. >>> >>> web2py call the get_user method, and web2py update the auth_user table >>> with the dict values. >>> >> >> >> Yes, but where are you telling web2py to update the auth_user table? Can >> you show the code? >> >> Anthony >> > --