Use full path when constructing "Other authentication methods"
[cascardo/ipsilon.git] / ipsilon / login / common.py
index db71fb0..cd4f166 100644 (file)
@@ -85,7 +85,7 @@ class LoginManagerBase(ConfigHelper, PluginObject):
             trans.wipe()
         raise cherrypy.HTTPRedirect(redirect)
 
-    def auth_failed(self, trans):
+    def auth_failed(self, trans, message=None):
         # try with next module
         next_login = self.next_login()
         if next_login:
@@ -104,7 +104,7 @@ class LoginManagerBase(ConfigHelper, PluginObject):
         # destroy session and return error
         if 'login_return' not in transdata:
             session.logout(None)
-            raise cherrypy.HTTPError(401)
+            raise cherrypy.HTTPError(401, message)
 
         raise cherrypy.HTTPRedirect(transdata['login_return'])
 
@@ -184,7 +184,9 @@ class LoginFormBase(LoginPageBase):
         if other_login_stacks:
             other_stacks = list()
             for ls in other_login_stacks:
-                url = '%s?%s' % (ls.path, self.trans.get_GET_arg())
+                url = '%s/login/%s?%s' % (
+                    self.basepath, ls.path, self.trans.get_GET_arg()
+                )
                 name = ls.name
                 other_stacks.append({'url': url, 'name': name})