Sorry my bad english.
Guys, I need to change the login functions ("default/user") to another
controller "phanterimages". I did:
on model:
import os
myconf_phanterimages = AppConfig(reload=True)
db_phanterimages = DAL(myconf_phanterimages.get('db_phanterimages.uri'),
pool_size=myconf.get('db_phanterimages.pool_size'),
migrate_enabled=myconf.get('db_phanterimages.migrate'),
check_reserved=['all'])
Auth_phanterimages = Auth(db_phanterimages,
host_names=myconf.get('host.names'))
Auth_phanterimages.define_tables(username=False, signature=False)
Auth_phanterimages.settings.login_url = URL('phanterimages', 'user',
args='login')
Auth_phanterimages.settings.logged_url = URL('phanterimages', 'user',
args='profile')
Auth_phanterimages.settings.login_next = URL('phanterimages', 'index')
Auth_phanterimages.settings.logout_next = URL('phanterimages', 'index')
Auth_phanterimages.settings.profile_next = URL('phanterimages', 'index')
Auth_phanterimages.settings.register_next = URL('phanterimages', 'user',
args='login')
Auth_phanterimages.settings.retrieve_username_next = URL('phanterimages',
'index')
Auth_phanterimages.settings.retrieve_password_next = URL('phanterimages',
'index')
Auth_phanterimages.settings.change_password_next = URL('phanterimages',
'index')
Auth_phanterimages.settings.request_reset_password_next =
URL('phanterimages', 'user', args='login')
Auth_phanterimages.settings.reset_password_next = URL('phanterimages',
'user', args='login')
Auth_phanterimages.settings.verify_email_next = URL('phanterimages',
'user', args='login')
on controller:
@Auth_phanterimages.requires_login()
def index():
"""um monte de código"""
return locals()
def user():
"""
exposes:
http://..../[app]/default/user/login
http://..../[app]/default/user/logout
http://..../[app]/default/user/register
http://..../[app]/default/user/profile
http://..../[app]/default/user/retrieve_password
http://..../[app]/default/user/change_password
http://..../[app]/default/user/bulk_register
use @auth.requires_login()
@auth.requires_membership('group name')
@auth.requires_permission('read','table name',record_id)
to decorate functions that need access control
also notice there is http://..../[app]/appadmin/manage/auth to allow
administrator to manage users
"""
return dict(form=Auth_phanterimages())
When I log in, everything is fine, when I log out, too ... everything is
working in compliance, the problem is when the login fails (wrong password). It
is redirected to the controller "default" ("it was in 'phanterimages /
user'.").
Temporarily, until I found another solution. I modified the gluon tools.py
file and left it in red:
if not user:
self.log_event(self.messages['login_failed_log'],
request.post_vars)
# invalid login
session.flash = self.messages.invalid_login #aqui
é mensagem do request.flash
callback(onfail, None)
redirect(URL(request.controller, request.function,
args=request.args, vars=request.get_vars),
client_side=settings.client_side)
Before it was like this:
redirect(self.url(args=request.args,
vars=request.get_vars), client_side=settings.client_side)
Solved my problem, but wanted to know if it's a bug or am I doing something
wrong? I searched the internet and found only one user with the same
problem in an old post, but the solution that advised him was to go back to
the default controller and closed the subject. Someone has a friendlier
solution without tampering with gluon source code.
--
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.