hypothesis 2 is off the table
BTW: saying that you have a method that returns a dict and stating that
that method doesn't update a field lacks of the key point......
*Who*writes/updates the auth_user table in your custom class ?
On Tuesday, January 8, 2013 5:36:39 PM UTC+1, Ignacio Ocampo wrote:
>
> 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.
>
--