Fix email verification for stage

This commit is contained in:
Christian Cueni 2020-02-13 11:28:23 +01:00
parent 82c1135f0e
commit 909f7337ac
5 changed files with 15 additions and 11 deletions

View File

@ -38,21 +38,22 @@ export default {
mounted() { mounted() {
this.$apollo.mutate({ this.$apollo.mutate({
mutation: REGISTRATION_MUTATION, mutation: REGISTRATION_MUTATION,
client: 'publicClient',
variables: { variables: {
input: { input: {
confirmationKeyInput: this.$route.query.confirmation || '' confirmationKeyInput: this.$route.query.confirmation || ''
} }
}, },
fetchPolicy: 'no-cache' fetchPolicy: 'no-cache'
}).then(({data: {registration}}) => { }).then(data => {
this.loading = false; this.loading = false;
if (registration.success) { if (data.registration.success) {
this.keyValid = true; this.keyValid = true;
this.$router.push('/'); this.$router.push('/');
} else { } else {
switch (registration.errors[0].field) { switch (data.registration.errors[0].field) {
case 'invalid_key': case 'invalid_key':
this.errorMessage = 'Der angegebene Verifizierungscode ist falsch oder abgelaufen.'; this.errorMessage = 'Der angegebene Verifizierungscode ist falsch oder abgelaufen.';
break; break;

View File

@ -72,7 +72,7 @@ class HepClient:
def fetch_admin_token(self, admin_user, password): def fetch_admin_token(self, admin_user, password):
response = self._call('/rest/deutsch/V1/integration/admin/token', 'post', response = self._call('/rest/deutsch/V1/integration/admin/token', 'post',
data={'username': admin_user, 'password': password}) data={'username': admin_user, 'password': password})
return response.json()['token'] return response.content.decode('utf-8')[1:-1]
def is_email_available(self, email): def is_email_available(self, email):
response = self._call('/rest/deutsch/V1/customers/isEmailAvailable', method='post', response = self._call('/rest/deutsch/V1/customers/isEmailAvailable', method='post',
@ -112,14 +112,14 @@ class HepClient:
return response.json() return response.json()
def customer_activate(self, confirmation_key): 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 'confirmationKey': confirmation_key
}) })
return response.json() return response.json()
def customers_search(self, admin_token, email): def customers_search(self, admin_token, email):
response = self._call("/rest/V1/customers/search?searchCriteria[filterGroups][0][filters][0][field]" response = self._call("/rest/V1/customers/search?searchCriteria[filterGroups][0][filters][0][field]="
"=email&searchCriteria[filterGroups][0][filters][0][value]={}".format(email), method='get', "email&searchCriteria[filterGroups][0][filters][0][value]={}".format(email), method='get',
additional_headers={'authorization': 'Bearer {}'.format(admin_token)}) additional_headers={'authorization': 'Bearer {}'.format(admin_token)})
json_data = response.json() json_data = response.json()

View File

@ -8,9 +8,9 @@
# Created on 03.02.20 # Created on 03.02.20
# @author: chrigu <christian.cueni@iterativ.ch> # @author: chrigu <christian.cueni@iterativ.ch>
from django.conf import settings 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 django.db import models
from datetime import timedelta
from django.utils import timezone
from core.hep_client import HepClient from core.hep_client import HepClient
@ -33,6 +33,8 @@ class AdminDataManager(models.Manager):
try: try:
admin_token = self.get(pk=DEFAULT_PK) 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: except self.model.DoesNotExist:
admin_token = self.update_admin_token() admin_token = self.update_admin_token()

View File

@ -5,6 +5,6 @@
<title>Confirmation</title> <title>Confirmation</title>
</head> </head>
<body> <body>
<a href="/{{ confirmation_key }}">Email bestätitgen</a> <a href="/verify-email?confirmation={{ confirmation_key }}&id={{ hep_id }}">Email bestätitgen</a>
</body> </body>
</html> </html>

View File

@ -91,6 +91,7 @@ class ConfirmationKeyDisplayView(TemplateView):
admin_token = AdminData.objects.get_admin_token() admin_token = AdminData.objects.get_admin_token()
hep_user = hep_client.customers_search(admin_token, email) 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['confirmation_key'] = hep_user['confirmation']
context['hep_id'] = hep_user['id']
return context return context