The idea is to create the form with the 'username' field by default, but 
when submitted, if the 'username' field contains an email address, change 
the setting and also copy the email address to request.vars.email before 
calling the login() method again. The second call to login will proceed as 
if the email address is being used for login. If it's not working, I'm not 
sure where it's breaking down. Did you get an error, or it just didn't 
check the email address properly?

Anthony

On Friday, December 9, 2011 12:17:18 PM UTC-5, Francisco Costa wrote:
>
> it seems it dosen't work.. maybe because I have a username field
> defined in my auth_user?
>
> On Dec 9, 4:46 pm, Anthony <[email protected]> wrote:
> > Not tested, but maybe something like:
> >
> > def user():
> >     custom_auth.settings.login_userfield = 'username'
> >     if request.args(0) == 'login':
> >         if request.vars.username and not
> > IS_EMAIL()(request.vars.username)[1]:
> >             custom_auth.settings.login_userfield = 'email'
> >             request.vars.email = request.vars.username
> >         return dict(form=custom_auth.login())
> >     return dict(form=custom_auth())
> >
> >
> >
> >
> >
> >
> >
> > On Friday, December 9, 2011 10:52:56 AM UTC-5, Francisco Costa wrote:
> >
> > > I would prefer that way.. I what controller function? I'm using in
> > > form from default/user but I'm using a customauth
> >
> > > On Dec 9, 3:02 pm, Anthony <[email protected]> wrote:
> > > > Rather than write a whole new method, one trick might be in the login
> > > > controller function, check the incoming request.vars.username to see 
> if
> > > it
> > > > is an email address (using the IS_EMAIL validator). Then, depending 
> on
> > > > that, dynamically set auth.settings.login_userfield to either 
> 'email' or
> > > > 'username', and then call auth.login() as usual.
> >
> > > > Anthony
> >
> > > > On Friday, December 9, 2011 9:50:02 AM UTC-5, Francisco Costa wrote:
> >
> > > > > yes, i think I'm going to build a custom method for login with
> > > > > username or email
> >
> > > > > On Dec 9, 2:13 pm, Anthony <[email protected]> wrote:
> > > > > > Are you saying you want users to be able to login with either 
> their
> > > > > > username or their email address? For that, I think you might 
> need a
> > > > > custom
> > > > > > login method. On the other hand, if you simply want to allow 
> users to
> > > > > have
> > > > > > a username, but always login with email address, you should be 
> able
> > > to
> > > > > do:
> >
> > > > > > auth.settings.login_userfield = 'email'
> >
> > > > > > Anthony
> >
> > > > > > On Friday, December 9, 2011 7:22:57 AM UTC-5, Francisco Costa 
> wrote:
> >
> > > > > > > lots of users on login form submit their email instead of the
> > > > > > > username..
> >
> > > > > > > it seems that auth.define_tables(username=True) forces username
> > > login
> > > > > > > but it is possible to have both?
>

Reply via email to