summaryrefslogtreecommitdiff
path: root/server/handlers.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/handlers.py')
-rw-r--r--server/handlers.py14
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