From 4a781b21db10f82e35b9945109b5f4d41ad0e8c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= Date: Thu, 15 Oct 2015 18:46:54 +0200 Subject: Server-side support for SAML logout, sessions are destroyed only using an AJAX call. --- server/handlers.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'server/handlers.py') diff --git a/server/handlers.py b/server/handlers.py index 5df7161..42f53b4 100644 --- a/server/handlers.py +++ b/server/handlers.py @@ -27,6 +27,12 @@ class CreateSession(CodeqService): request.reply({'code': 0, 'message': 'OK', 'sid': server.user_session.UserSession().get_sid()}) +class DestroySession(CodeqService): + def process(self, request): + request.session.destroy() + request.reply({'code': 0, 'message': 'OK'}) + + class Login(CodeqService): """Logs in a client, authenticating the session. """ @@ -48,9 +54,10 @@ class Login(CodeqService): settings = session.get_settings() request.reply({'code': 0, 'message': 'OK', 'name': name, 'email' : email, 'joined' : date_joined.isoformat(), 'last-login' : last_login.isoformat(), 'settings': settings}) + class Logout(CodeqService): def process(self, request): - request.session.destroy() + request.session.logout() request.reply({'code': 0, 'message': 'OK'}) @@ -302,6 +309,7 @@ class SamlLogin(CodeqService): # maps actions to their handlers incoming_handlers = { 'create_session': CreateSession(), + 'destroy_session': DestroySession(), 'login': Login(), 'signup': Signup(), 'change_password': ChangePassword(), @@ -318,7 +326,8 @@ incoming_handlers = { 'load_problem': LoadProblem(), 'end_problem': EndProblem(), 'user_stat': GetUserStat(), - 'saml_login': SamlLogin() + 'saml_login': SamlLogin(), + 'saml_logout': Logout() } -- cgit v1.2.1