Hi,

I'm working with my own authentication provider as: *
auth.settings.login_form=MyAuth()*, all *works correctly*.

I need an additional field from default auth_user table definition, I used: 
*auth.settings.extra_fields['auth_user'] = [Field('**employee_id**', 
'text')]*, works correctly (the value of this field is provided by MyAuth() 
to reference another system, ergo, in web2py it's would be treated as a 
simple text).

The final schema is:

CREATE TABLE auth_user(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    first_name CHAR(128),
    last_name CHAR(128),
    email CHAR(512),
    password CHAR(512),
    registration_key CHAR(512),
    reset_password_key CHAR(512),
    registration_id CHAR(512)
, *employee_id* TEXT);

In MyAuth() class, I have the method get_user(self), which web2py call in 
the login process to get user details. At the end of this method, I return:

user = dict(first_name=response['attributes']['cn'][0], 
last_name=response['attributes']['cn'][0], 
username=response['attributes']['uid'][0], 
registration_id=response['attributes']['uid'][0], *employee_id*
=response['attributes']['*employee_id*'][0])

All fields are updated correctly, except the *employee_id*, that is the 
additional field.

*Hypothesis 1*: I don't know if web2py is updating only default fields from 
the auth_user table (and because employee_id are not default field, it's no 
updated).
*Hypothesis 2*: The name of the additional field *employee_id* is malformed 
(because the last part "_id" is used to reference another table and 
commonly is INT type and web2py don't know how to handle this, since there 
is no the *employee* table).

Thank you.

-- 



Reply via email to