diff options
-rwxr-xr-x | ipsilon/login/common.py | 22 | ||||
-rw-r--r-- | templates/login/form.html | 6 |
2 files changed, 27 insertions, 1 deletions
diff --git a/ipsilon/login/common.py b/ipsilon/login/common.py index cb45fd6..6cd1ca8 100755 --- a/ipsilon/login/common.py +++ b/ipsilon/login/common.py @@ -226,6 +226,8 @@ class LoginFormBase(LoginPageBase): "next_url": next_url, "username": username, "login_target": target, + "cancel_url": '%s/login/cancel?%s' % (self.basepath, + self.trans.get_GET_arg()), } context.update(kwargs) if self.trans is not None: @@ -242,6 +244,7 @@ class Login(Page): def __init__(self, *args, **kwargs): super(Login, self).__init__(*args, **kwargs) + self.cancel = Cancel(*args, **kwargs) self.first_login = None self.info = Info(self._site) @@ -279,6 +282,25 @@ class Logout(Page): return self._template('logout.html', title='Logout') +class Cancel(Page): + + def GET(self, *args, **kwargs): + + session = UserSession() + session.logout(None) + + # return to the caller if any + transdata = self.get_valid_transaction('login', **kwargs).retrieve() + if 'login_return' not in transdata: + raise cherrypy.HTTPError(401) + raise cherrypy.HTTPRedirect(transdata['login_return']) + + def root(self, *args, **kwargs): + op = getattr(self, cherrypy.request.method, self.GET) + if callable(op): + return op(*args, **kwargs) + + class LoginMgrsInstall(object): def __init__(self): diff --git a/templates/login/form.html b/templates/login/form.html index e5e5978..69a0cc7 100644 --- a/templates/login/form.html +++ b/templates/login/form.html @@ -33,7 +33,11 @@ </div> <div class="form-group"> <div class="col-sm-offset-2 col-md-offset-2 col-xs-12 col-sm-10 col-md-10 submit"> - <a href="{{ basepath }}/" title="Cancel" class="btn btn-link" tabindex="4">Cancel</a> + {% if cancel_url %} + <a href="{{ cancel_url }}" title="Cancel" class="btn btn-link" tabindex="4">Cancel</a> + {% 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 %} |