diff options
Diffstat (limited to 'server/handlers.py')
-rw-r--r-- | server/handlers.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/server/handlers.py b/server/handlers.py index 93818f0..5df7161 100644 --- a/server/handlers.py +++ b/server/handlers.py @@ -284,11 +284,19 @@ class GetUserStat(CodeqService): class SamlLogin(CodeqService): def process(self, request): - data = request.data.get('data') - if data is None: + js = request.data + saml_data = js.get('saml_data') + gui_lang = js.get('gui_lang', 'en') + if saml_data is None: request.reply({'code': 1, 'message': 'SAML user data not specified'}) else: - request.reply({'code': 0, 'message': 'OK'}) # TODO: implement login using SAML credentials + session = request.session + try: + name, email, date_joined, last_login = session.saml_login_or_signup(saml_data, gui_lang) + except Exception as e: + request.reply({'code': 2, 'message': 'SAML login failed: ' + str(e)}) + else: + request.reply({'code': 0, 'message': 'OK', 'name': name, 'email': email, 'joined': date_joined.isoformat(), 'last-login': last_login.isoformat(), 'settings': session.get_settings()}) # maps actions to their handlers |