From 68e61442b137c7e5198b37a1c1612d2ca0cc3ec0 Mon Sep 17 00:00:00 2001 From: David Greisen Date: Fri, 7 Aug 2015 14:22:04 -0400 Subject: [PATCH] error handling to login pipeline --- devdash/github/pipeline.py | 4 +++- devdash/kratos/pipeline.py | 20 +++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/devdash/github/pipeline.py b/devdash/github/pipeline.py index 4f467da..3751a3f 100644 --- a/devdash/github/pipeline.py +++ b/devdash/github/pipeline.py @@ -18,4 +18,6 @@ def enterprise_details(request, response, backend, details, is_new, **kwargs): 'email': details['email'], 'location': details['location'], } - ghe.user.patch(data=updated_user_data) + resp = ghe.user.patch(data=updated_user_data) + if resp.status_code >= 400: + raise Exception(resp.text) diff --git a/devdash/kratos/pipeline.py b/devdash/kratos/pipeline.py index e64df63..2f0170c 100644 --- a/devdash/kratos/pipeline.py +++ b/devdash/kratos/pipeline.py @@ -1,15 +1,18 @@ from django.conf import settings from universalclient import Client, jsonFilter -import requests -import json + kratos = Client(settings.KRATOS_URL, dataFilter=jsonFilter, auth=('admin', settings.KRATOS_ADMIN_PWD), headers={'Content-Type': 'application/json'}) + def register_kratos(request, response, user, **kwargs): if not user or not user.gh_id: return social_auth = user.social_auth.get(provider='github').extra_data - kratos_data = kratos.users.get(params={'gh': user.gh_id}).json() + resp = kratos.users.get(params={'gh': user.gh_id}) + if resp.status_code >= 400: + raise Exception(resp.text) + kratos_data = resp.json() if kratos_data.get('error') == 'not_found': kratos_user = { @@ -25,26 +28,33 @@ def register_kratos(request, response, user, **kwargs): }, }, } -# resp = requests.post(settings.KRATOS_URL '/users', data=json.dumps(kratos_user), auth=auth=('admin', settings.KRATOS_ADMIN_PWD)) resp = kratos.users.post(data=kratos_user) + if resp.status_code >= 400: + raise Exception(resp.text) kratos_id = resp.json()['name'] else: kratos_id = kratos_data.get('name') - + if not kratos_id: return if user.contractor != kratos_data.get('data', {}).get('contractor') or \ user.username != kratos_data.get('data', {}).get('username'): resp = kratos.users._(kratos_id).data.put(data={'contractor': user.contractor, 'username': user.username}) + if resp.status_code >= 400: + raise Exception(resp.text) print resp, resp.text if 'kratos|enabled' not in kratos_data.get('roles', []): resp = kratos.users._(kratos_id).put() + if resp.status_code >= 400: + raise Exception(resp.text) print resp, resp.text if 'gh|user' not in kratos_data.get('roles', []): resp = kratos.users._(kratos_id).roles.gh.user.put() + if resp.status_code >= 400: + raise Exception(resp.text) print resp, resp.text if kratos_id != user.kratos_id: