diff --git a/client/src/pages/email-verification.vue b/client/src/pages/email-verification.vue index bca56814..56a518af 100644 --- a/client/src/pages/email-verification.vue +++ b/client/src/pages/email-verification.vue @@ -38,21 +38,22 @@ export default { mounted() { this.$apollo.mutate({ mutation: REGISTRATION_MUTATION, + client: 'publicClient', variables: { input: { confirmationKeyInput: this.$route.query.confirmation || '' } }, fetchPolicy: 'no-cache' - }).then(({data: {registration}}) => { + }).then(data => { this.loading = false; - if (registration.success) { + if (data.registration.success) { this.keyValid = true; this.$router.push('/'); } else { - switch (registration.errors[0].field) { + switch (data.registration.errors[0].field) { case 'invalid_key': this.errorMessage = 'Der angegebene Verifizierungscode ist falsch oder abgelaufen.'; break; diff --git a/server/core/hep_client.py b/server/core/hep_client.py index 0c932675..975c59f4 100644 --- a/server/core/hep_client.py +++ b/server/core/hep_client.py @@ -72,7 +72,7 @@ class HepClient: def fetch_admin_token(self, admin_user, password): response = self._call('/rest/deutsch/V1/integration/admin/token', 'post', data={'username': admin_user, 'password': password}) - return response.json()['token'] + return response.content.decode('utf-8')[1:-1] def is_email_available(self, email): response = self._call('/rest/deutsch/V1/customers/isEmailAvailable', method='post', @@ -112,14 +112,14 @@ class HepClient: return response.json() def customer_activate(self, confirmation_key): - response = self._call('/rest/V1/customers/me/activate', method='post', data={ + response = self._call("/customer/account/confirm/?back_url=&id=58862&key=f62319366a5ecdd1e3dede5fd1a5c236", method='put', data={ 'confirmationKey': confirmation_key }) return response.json() def customers_search(self, admin_token, email): - response = self._call("/rest/V1/customers/search?searchCriteria[filterGroups][0][filters][0][field]" - "=email&searchCriteria[filterGroups][0][filters][0][value]={}".format(email), method='get', + response = self._call("/rest/V1/customers/search?searchCriteria[filterGroups][0][filters][0][field]=" + "email&searchCriteria[filterGroups][0][filters][0][value]={}".format(email), method='get', additional_headers={'authorization': 'Bearer {}'.format(admin_token)}) json_data = response.json() diff --git a/server/core/managers.py b/server/core/managers.py index 059130a4..171d6abb 100644 --- a/server/core/managers.py +++ b/server/core/managers.py @@ -8,9 +8,9 @@ # Created on 03.02.20 # @author: chrigu from django.conf import settings -from django.contrib.auth.models import Permission -from django.contrib.contenttypes.models import ContentType from django.db import models +from datetime import timedelta +from django.utils import timezone from core.hep_client import HepClient @@ -33,6 +33,8 @@ class AdminDataManager(models.Manager): try: admin_token = self.get(pk=DEFAULT_PK) + if admin_token.updated_at < timezone.now() + timedelta(hours=1): + admin_token = self.update_admin_token() except self.model.DoesNotExist: admin_token = self.update_admin_token() diff --git a/server/core/templates/confirmation_key.html b/server/core/templates/confirmation_key.html index 876f9568..d5209f7a 100644 --- a/server/core/templates/confirmation_key.html +++ b/server/core/templates/confirmation_key.html @@ -5,6 +5,6 @@ Confirmation - Email bestätitgen + Email bestätitgen diff --git a/server/core/views.py b/server/core/views.py index f8a8bba8..d1a22ee3 100644 --- a/server/core/views.py +++ b/server/core/views.py @@ -91,6 +91,7 @@ class ConfirmationKeyDisplayView(TemplateView): admin_token = AdminData.objects.get_admin_token() hep_user = hep_client.customers_search(admin_token, email) - context = super().get_context_data(self.request, **kwargs) + context = super().get_context_data(**kwargs) context['confirmation_key'] = hep_user['confirmation'] + context['hep_id'] = hep_user['id'] return context