It is combinations of two things: 1) a bug (just fixed in trunk) 2) the example is missing something (I fixed it). Should be:
auth.settings.table_user = db.define_table('auth_user', Field('first_name', length=512,default=''), Field('last_name', length=512,default=''), Field('email', length=512,default='', requires = [IS_EMAIL(),IS_NOT_IN_DB(db,'auth_user.email')]), Field('password', 'password', readable=False, label='Password', requires=CRYPT(auth.settings.hmac_key)), Field('registration_key', length=512, writable=False, readable=False,default=''), Field('reset_password_key', length=512, writable=False, readable=False, default='')) Sorry about this and thanks for help in debugging. Massimo On Feb 8, 1:42 pm, Alexandre Andrade <alexandrema...@gmail.com> wrote: > I used the sample code > ofhttp://www.web2py.com/examples/default/tools#authentication: > > --------------------------- > auth=Auth(globals(),db) # authentication/authorization > auth.settings.hmac_key='sha512:e2976f55-309d-40fc-b69d-59fc032a6438' > > auth.messages.access_denied = 'Insufficient privileges' > auth.messages.logged_in = 'Logged in' > auth.messages.email_sent = 'Email sent' > auth.messages.unable_to_send_email = 'Unable to send email' > auth.messages.email_verified = 'Email verified' > auth.messages.logged_out = 'Logged out' > auth.messages.registration_successful = 'Registration successful' > auth.messages.invalid_email = 'Invalid email' > auth.messages.invalid_login = 'Invalid login' > auth.messages.invalid_user = 'Invalid user' > auth.messages.mismatched_password = "As senhas não conferem" > #auth.messages.verify_email = 'Click on the > linkhttp://...verify_email/%(key)s > to verify your email' > auth.messages.verify_email_subject = 'Password verify' > auth.messages.username_sent = 'Seu nome de usuário foi enviado para você' > auth.messages.new_password_sent = 'Uma nova senha foi enviada para você' > auth.messages.password_changed = 'Senha Alterada' > auth.messages.retrieve_username = 'Seu nome de usuário é: %(username)s' > auth.messages.retrieve_username_subject = 'Recupear nome de usuário' > auth.messages.retrieve_password = 'Sua Senha: %(password)s' > auth.messages.retrieve_password_subject = 'Recuperar senha' > auth.messages.profile_updated = 'Perfil atualizado' > auth.messages.new_password = 'Nova senha' > auth.messages.old_password = 'Senha atual' > > auth.settings.table_user = db.define_table( > auth.settings.table_user_name, > Field('first_name', length=512,default=''), > Field('last_name', length=512,default=''), > Field('email', length=512,default='', > requires = [IS_EMAIL(), > > IS_NOT_IN_DB(db,'%s.email'%auth.settings.table_user_name)]), > Field('password', 'password', readable=False, > label='Password', requires=CRYPT()), > Field('registration_key', length=512, > writable=False, readable=False,default='')) > > auth.define_tables() # creates all needed tables > ------------------------------------ > > and I just get flash (from session.flash) responding: "invalid login" when > trying to login. > > When I try to retrieve password, Is when I get: > > Traceback (most recent call last): > File "gluon/restricted.py", line 173, in restricted > exec ccode in environment > File "/home/web2py/applications/convenios/controllers/default.py" > <https://hipercenter.com/admin/default/edit/convenios/controllers/defa...>, > line 354, in <module> > File "gluon/globals.py", line 96, in <lambda> > self._caller = lambda f: f() > File "/home/web2py/applications/convenios/controllers/default.py" > <https://hipercenter.com/admin/default/edit/convenios/controllers/defa...>, > line 321, in user > return dict(form=auth()) > File "gluon/tools.py", line 729, in __call__ > return self.retrieve_password() > File "gluon/tools.py", line 1621, in retrieve_password > return self.reset_password_deprecated(next,onvalidation,onaccept,log) > File "gluon/tools.py", line 1460, in reset_password_deprecated > d = {passfield: user[passfield].validate(password)[0], > > I'm using postgresql 8.3.8 and the field in postgresl is character > varying(512) > > When I drops the code above, the auth works perfectly. > > 2010/2/8 mdipierro <mdipie...@cs.depaul.edu> > > > > > I am going to need your help here. from tools.py > > > user = self.db(table_user.email == > > form.vars.email).select().first() > > .... > > d = {passfield: user[passfield].validate(password)[0], > > 'registration_key': ''} > > > according to your error it says user[passfield] is a str. It cannot be > > be. From the code above it is clearly a record. Can you add a print > > statement as see what is going on? > > > Can you also print your code for custom auth? > > > Massimo > > > On Feb 8, 12:03 pm, Alexandre Andrade <alexandrema...@gmail.com> > > wrote: > > > Now, using the other example, get the error: > > > > Traceback (most recent call last): > > > File "gluon/restricted.py", line 173, in restricted > > > exec ccode in environment > > > File "/home/web2py/applications/convenios/controllers/default.py" > > > <https://hipercenter.com/admin/default/edit/convenios/controllers/defa.. > > .>, > > > line 354, in <module> > > > File "gluon/globals.py", line 96, in <lambda> > > > self._caller = lambda f: f() > > > File "/home/web2py/applications/convenios/controllers/default.py" > > > <https://hipercenter.com/admin/default/edit/convenios/controllers/defa.. > > .>, > > > line 321, in user > > > return dict(form=auth()) > > > File "gluon/tools.py", line 729, in __call__ > > > return self.retrieve_password() > > > File "gluon/tools.py", line 1621, in retrieve_password > > > return self.reset_password_deprecated(next,onvalidation,onaccept,log) > > > File "gluon/tools.py", line 1460, in reset_password_deprecated > > > d = {passfield: user[passfield].validate(password)[0], > > > AttributeError: 'str' object has no attribute 'validate' > > > > 2010/2/8 mdipierro <mdipie...@cs.depaul.edu> > > > > > Please use the example in here: > > > >http://www.web2py.com/examples/default/tools#authentication > > > > > you probably have a too short password length, should be 512. > > > > > On Feb 8, 8:16 am, Alexandre Andrade <alexandrema...@gmail.com> wrote: > > > > > I customize auth using the reference of page 245 (229 ) of the book, > > but > > > > > after the login's of existents users don't work. > > > > > > I tried with a new app, created a user, and works. Its not possible > > alter > > > > it > > > > > after. > > > > > > How make it work with a existent auth_user table? > > > > > > -- > > > > > Atenciosamente > > > > > > -- > > > > > ========================= > > > > > Alexandre Andrade > > > > > Hipercenter.com > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "web2py-users" group. > > > > To post to this group, send email to web...@googlegroups.com. > > > > To unsubscribe from this group, send email to > > > > web2py+unsubscr...@googlegroups.com<web2py%2bunsubscr...@googlegroups.com> > > <web2py%2bunsubscr...@googlegroups.com<web2py%252bunsubscr...@googlegroups.com> > > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/web2py?hl=en. > > > > -- > > > Atenciosamente > > > > -- > > > ========================= > > > Alexandre Andrade > > > Hipercenter.com > > > -- > > You received this message because you are subscribed to the Google Groups > > "web2py-users" group. > > To post to this group, send email to web...@googlegroups.com. > > To unsubscribe from this group, send email to > > web2py+unsubscr...@googlegroups.com<web2py%2bunsubscr...@googlegroups.com> > > . > > For more options, visit this group at > >http://groups.google.com/group/web2py?hl=en. > > -- > Atenciosamente > > -- > ========================= > Alexandre Andrade > Hipercenter.com -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.