From 30a0c5bfe9af806f2153dac6f294241720b7731c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= Date: Mon, 2 Nov 2015 21:48:49 +0100 Subject: Modified the python server to support SAML account merge/upgrade upon first SAML-type login of an existing user. --- server/handlers.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'server/handlers.py') diff --git a/server/handlers.py b/server/handlers.py index 30f52f1..da257c1 100644 --- a/server/handlers.py +++ b/server/handlers.py @@ -303,14 +303,20 @@ class SamlLogin(CodeqService): js = request.data saml_data = js.get('saml_data') gui_lang = js.get('gui_lang', 'en') + upgrade_account = js.get('upgrade_account') + upgrade_password = js.get('upgrade_password') if saml_data is None: - request.reply({'code': 1, 'message': 'SAML user data not specified'}) + request.reply({'code': 3, 'message': 'SAML user data not specified'}) else: 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)}) + name, email, date_joined, last_login = session.saml_login_or_signup(saml_data, gui_lang, upgrade_account, upgrade_password) + except AccountMergeRequired as amr: + request.reply({'code': 1, 'message': 'Retry with "upgrade_account" and "upgrade_password"', 'username': amr.username}) + except AuthenticationFailed as af: + request.reply({'code': 4, 'message': 'Password is incorrect'}) +# 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()}) -- cgit v1.2.1