diff options
-rw-r--r-- | ipsilon/login/common.py | 28 | ||||
-rw-r--r-- | templates/login/form.html | 13 |
2 files changed, 32 insertions, 9 deletions
diff --git a/ipsilon/login/common.py b/ipsilon/login/common.py index 9496a4b..3f2b007 100644 --- a/ipsilon/login/common.py +++ b/ipsilon/login/common.py @@ -142,6 +142,19 @@ class LoginManagerBase(ConfigHelper, PluginObject): except (ValueError, IndexError): return None + def other_login_stacks(self): + plugins = self._site[FACILITY] + stack = list() + try: + idx = plugins.enabled.index(self.name) + except (ValueError, IndexError): + idx = None + for i in range(0, len(plugins.enabled)): + if i == idx: + continue + stack.append(plugins.available[plugins.enabled[i]]) + return stack + def on_enable(self): # and add self to the root @@ -182,11 +195,14 @@ class LoginFormBase(LoginPageBase): return op(*args, **kwargs) def create_tmpl_context(self, **kwargs): - next_url = None - next_login = self.lm.next_login() - if next_login: - next_url = '%s?%s' % (next_login.path, - self.trans.get_GET_arg()) + other_stacks = None + other_login_stacks = self.lm.other_login_stacks() + if other_login_stacks: + other_stacks = list() + for ls in other_login_stacks: + url = '%s?%s' % (ls.path, self.trans.get_GET_arg()) + name = ls.name + other_stacks.append({'url': url, 'name': name}) cookie = SecureCookie(USERNAME_COOKIE) cookie.receive() @@ -210,7 +226,7 @@ class LoginFormBase(LoginPageBase): "username_text": self.lm.username_text, "password_text": self.lm.password_text, "description": self.lm.help_text, - "next_url": next_url, + "other_stacks": other_stacks, "username": username, "login_target": target, "cancel_url": '%s/login/cancel?%s' % (self.basepath, diff --git a/templates/login/form.html b/templates/login/form.html index 69a0cc7..fe99c5a 100644 --- a/templates/login/form.html +++ b/templates/login/form.html @@ -38,9 +38,6 @@ {% else %} <a href="{{ basepath }}" title="Cancel" class="btn btn-link" tabindex="4">Cancel</a> {% endif %} - {% if next_url %} - <a href="{{ next_url }}" title="Next authentication method" class="btn btn-link" tabindex="5">Next method </a> - {% endif %} <button type="submit" value="login" class="btn btn-primary btn-lg" tabindex="3">Log In</button> </div> </div> @@ -49,6 +46,16 @@ <div class="col-sm-5 col-md-6 col-lg-7 details"> <p>{{description}}</p> +{% if other_stacks %} + <hr> + <p>Other authentication methods: + <ul> + {% for s in other_stacks %} + <li><a href="{{ s['url'] }}" class="btn btn-link" tabindex="5">{{ s['name'] }}</a></li> + {% endfor %} + </ul> + </p> +{% endif %} </div> {% endblock %} |