Hello all,
Trying to do a custom validation using login_bare, which I have never
needed before, but I get a ticket shown below, it includes the minimalist
code to reproduce it.
The view just shows the form.
Using authentication by username:
auth.define_tables(username=True, signature=False)
<type 'exceptions.TypeError'> 'LazyCrypt' object has no attribute
'__getitem__' web2py™ Version 2.12.3-stable+timestamp.2015.08.19.00.18.03
Traceback
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Traceback (most recent call last):
File "C:\w2p\web2py_21203_src\gluon\restricted.py", line 227, in restricted
exec ccode in environment
File "C:/w2p/web2py_21203_src/applications/test/controllers/bare.py"
<http://10.0.0.27:8000/admin/default/edit/test/controllers/bare.py>, line 34,
in <module>
File "C:\w2p\web2py_21203_src\gluon\globals.py", line 412, in <lambda>
self._caller = lambda f: f()
File "C:/w2p/web2py_21203_src/applications/test/controllers/bare.py"
<http://10.0.0.27:8000/admin/default/edit/test/controllers/bare.py>, line 13,
in user
if form.validate(onvalidation=uservalidate, hideerror=True):
File "C:\w2p\web2py_21203_src\gluon\html.py", line 2238, in validate
if self.accepts(**kwargs):
File "C:\w2p\web2py_21203_src\gluon\sqlhtml.py", line 1496, in accepts
**kwargs
File "C:\w2p\web2py_21203_src\gluon\html.py", line 2139, in accepts
call_as_list(onvalidation, self)
File "C:\w2p\web2py_21203_src\gluon\html.py", line 146, in call_as_list
item(*a, **b)
File "C:/w2p/web2py_21203_src/applications/test/controllers/bare.py"
<http://10.0.0.27:8000/admin/default/edit/test/controllers/bare.py>, line 26,
in uservalidate
user = auth.login_bare(u, p)
File "C:\w2p\web2py_21203_src\gluon\tools.py", line 2352, in login_bare
settings.passfield].validate(password)[0]
File "C:\w2p\web2py_21203_src\gluon\packages\dal\pydal\objects.py", line
1625, in validate
(value, error) = validator(value)
File "C:\w2p\web2py_21203_src\gluon\validators.py", line 2850, in __call__
value = value and value[:self.max_length]
TypeError: 'LazyCrypt' object has no attribute '__getitem__'
In file: C:\w2p\web2py_21203_src\applications\test\controllers/bare.py
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
# -*- coding: utf-8 -*-
auth.settings.remember_me_form = False
auth.settings.login_url = URL
<http://10.0.0.27:8000/examples/global/vars/URL>('bare','user', args='login')
@auth.requires_login()
def index():
return {}
def user():
form = auth()
if form.validate(onvalidation=uservalidate, hideerror=True):
redirect <http://10.0.0.27:8000/examples/global/vars/redirect>(URL
<http://10.0.0.27:8000/examples/global/vars/URL>('bare', 'index'))
elif form.errors:
response <http://10.0.0.27:8000/examples/global/vars/response>.flash = '
'.join(form.errors.values())
return {'form':form}
def uservalidate(f):
u = f.vars.username or ''
p = f.vars.password or ''
print 'u: %s, p: %s' %(u,p)
if u and p:
user = auth.login_bare(u, p)
print user
if not user:
f.errors.password = 'Invalid Password'
return user
else:
return False
response <http://10.0.0.27:8000/examples/global/vars/response>._vars=response
<http://10.0.0.27:8000/examples/global/vars/response>._caller(user)
Thanks for any hints,
Denes
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.