diff --git a/server/oauth/hep_client.py b/server/oauth/hep_client.py index d4222e4b..8214422a 100644 --- a/server/oauth/hep_client.py +++ b/server/oauth/hep_client.py @@ -24,23 +24,20 @@ class HepClientNoTokenException(Exception): class HepClient: - URL = settings.HEP_URL def _call(self, url, request, token, method='get', data=None): - request_url = f'{self.URL}{url}' - token_parameters = { 'token': token, 'request': request } if method == 'post': - response = requests.post(request_url, json=data) + response = oauth.hep.post(url, json=data, **token_parameters) elif method == 'get': response = oauth.hep.get(url, params=data, **token_parameters) elif method == 'put': - response = requests.put(request_url, data=data) + response = oauth.hep.put(url, data=data, **token_parameters) if response.status_code == 401: raise HepClientUnauthorizedException(response.status_code, response.json()) @@ -59,66 +56,66 @@ class HepClient: def logout(self, request=None, token=None): self._has_credentials(request, token) - response = self._call('api/auth/logout', request, token, method='post') - return response.json()['message'] + self._call('api/auth/logout', request, token, method='post') + return True def fetch_eorders(self, request=None, token=None): - # self._has_credentials(request, token) - # data = { - # 'filters[product_type]': 'eLehrmittel', - # } - # response = self._call('api/partners/users/orders/search', request, token, data=data) - # return response.json()['data'] + self._has_credentials(request, token) + data = { + 'filters[product_type]': 'eLehrmittel', + } + response = self._call('api/partners/users/orders/search', request, token, data=data) + return response.json()['data'] - return [ - { - "id": 5, - "status": "paid", - "order_total": 10000, - "created_at": "2021-05-10T20:52:16.000000Z", - "billing_address": { - "id": 20, - "salutation": "male", - "first_name": "Hans", - "last_name": "Meier", - "company": "Lustig GmbH", - "street": "Sulgenrain 12890", - "city": "Bern", - "post_code": "3007", - "country": "Schweiz" - }, - "delivery_address": { - "id": 19, - "salutation": "male", - "first_name": "Hans", - "last_name": "Muster", - "company": "Muster AG", - "street": "Ruderweg 24", - "city": "Bern", - "post_code": "3000", - "country": "Schweiz" - }, - "entries": [ - { - "id": 3433, - "uri": "\/products\/myskillbox-lernende", - "url": None, - "title": "mySkillbox für Lernende ", - "subtitle": "Lizenz gültig für 4 Jahre", - "isbn": "978-3-0355-1397-4", - "slug": "myskillbox-lernende", - "product_type": "eLehrmittel", - "product_form": "", - "cover": "https:\/\/hep-verlag.fra1.digitaloceanspaces.com\/staging\/products\/2921\/978-3-0355-1397-4.jpg", - "price": 100, - "price_total": 100, - "amount": 1, - "authors": [] - } - ] - } - ] + # return [ + # { + # "id": 5, + # "status": "paid", + # "order_total": 10000, + # "created_at": "2021-05-10T20:52:16.000000Z", + # "billing_address": { + # "id": 20, + # "salutation": "male", + # "first_name": "Hans", + # "last_name": "Meier", + # "company": "Lustig GmbH", + # "street": "Sulgenrain 12890", + # "city": "Bern", + # "post_code": "3007", + # "country": "Schweiz" + # }, + # "delivery_address": { + # "id": 19, + # "salutation": "male", + # "first_name": "Hans", + # "last_name": "Muster", + # "company": "Muster AG", + # "street": "Ruderweg 24", + # "city": "Bern", + # "post_code": "3000", + # "country": "Schweiz" + # }, + # "entries": [ + # { + # "id": 3433, + # "uri": "\/products\/myskillbox-lernende", + # "url": None, + # "title": "mySkillbox für Lernende ", + # "subtitle": "Lizenz gültig für 4 Jahre", + # "isbn": "978-3-0355-1397-4", + # "slug": "myskillbox-lernende", + # "product_type": "eLehrmittel", + # "product_form": "", + # "cover": "https:\/\/hep-verlag.fra1.digitaloceanspaces.com\/staging\/products\/2921\/978-3-0355-1397-4.jpg", + # "price": 100, + # "price_total": 100, + # "amount": 1, + # "authors": [] + # } + # ] + # } + # ] def active_myskillbox_product_for_customer(self, request=None, token=None): eorders = self.fetch_eorders(request=request, token=token) diff --git a/server/oauth/mutations.py b/server/oauth/mutations.py index c13f3f68..bb7112ab 100644 --- a/server/oauth/mutations.py +++ b/server/oauth/mutations.py @@ -4,6 +4,7 @@ from django.utils.timezone import now from graphene import relay from oauth.hep_client import HepClient, HepClientException +from oauth.models import OAuth2Token from oauth.user_signup_login_handler import create_role_for_user from users.models import License @@ -54,13 +55,22 @@ class Logout(graphene.Mutation): success = graphene.Boolean() def mutate(self, info): + # log user out from myskillbox even if hep logout fails try: - logout(info.context) + token = OAuth2Token.objects.get(user=info.context.user) hep_client = HepClient() - hep_client.logout(request=info) - return Logout(success=True) - except Exception: - return Logout(success=False) + try: + hep_client.logout(request=info.context) + except Exception as e: + pass + + token.delete() + + except OAuth2Token.DoesNotExist: + pass + + logout(info.context) + return Logout(success=True) class OauthMutations(object):