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