Hi Anthony, Thanks again, it works. Now it leads to another question - my application has accounting system and ticketing system sharing the same auth's tables. The 2 systems are in different controllers namely accounting & ticketing. All my accounting view htmls extend layout_accounting.html, all the ticketing view htmls extend layout_ticketing.html, inside these layout files, they include their corresponding menu i.e. response.menu_accounting, response.menu_ticketing. If i use your suggestion below, it will work well for accounting but not for ticketing under the same application. How should I address it?
Could you tell me where I find the definition/documentation of Auth()'s arguments? What does function='user' do here? Many thanks in advance! On Sunday, April 9, 2017 at 11:48:43 PM UTC+8, Anthony wrote: > > auth = Auth(..., controller='accounting', function='user') > > Anthony > > On Sunday, April 9, 2017 at 11:13:33 AM UTC-4, Rudy wrote: >> >> Hi there, >> >> I have created an accounting application, say the landing page is >> http://localhost:8000/tests/accounting/index. I need to change the link >> under "LOG IN" dropdown menu on top right corner to >> http://...../tests/accounting/user/login instead of using >> http://...../tests/default/user/login. I thought it was pretty common & >> simple, after I read a few posts on webypy-users group, I still don't know >> how to change it. Below is what I have tried: >> >> 1) Found below suggestion from Massimo, i commented out {{='auth' in >> globals() and auth.navbar('Welcome', mode='dropdown') or ''}}, and added >> below in layout.html >> {{if auth.user:}} >> <a href="{{=URL('accounting','user/logout')}}">Logout</a> >> {{else:}} >> <a href="{{=URL('accounting','user/login')}}">Login</a> >> <a >> href="{{=URL('accounting','user/register')}}">Register</a> >> <a >> href="{{=URL('accounting','user/retrieve_password')}}">Lost Password</a> >> {{pass}} >> By doing above, I went >> to http://...../tests/accounting/user/login form, once I filled the form >> and clicked the blue "LOG IN" button (the authentication went through), it >> redirected to http://..../tests/default/login#, same issue happened when I >> logged out. How can I tell web2py where the next_url is? Or should I take >> this approach at all to address my original question? If this is the way to >> do it, any easy way to make it as dropdown menu instead of just links? >> >> 2) Then i tried to understand better how auth.navbar works by looking >> into tools.py under gluon. I found navbar takes an argument action, i >> modified it in layout.html to {{='auth' in globals() and >> auth.navbar('Welcome', action='/tests/accounting/user', mode='dropdown') or >> ''}}. I went to the correct form when I clicked the LOG IN link, the >> redirect went to the correct controller and action, but only when I logged >> out, the var _next pointed to and redirected to the default controller >> again - ?_next=/tests/default/index. How do i fix it? What does the >> argument "referred_action" do? >> >> 3) I mixed point 1 above and Anthony suggestion - added point 1 above in >> layout.html, so that it went to correct login form, then I added below in >> tests/accounting/user action: >> form = auth() >> if request.args(0) == 'login': >> form['_action'] = URL(args=request.args) >> The behaviour went exactly like point 1 above >> >> I thought most applications would change this authentication urls, there >> must be a better way to configure it, I already spent the weekend on it. >> Any pointers are much appreciated. >> > -- 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.

