Enforce terms in proxy

This commit is contained in:
Christian Cueni 2020-05-19 10:38:37 +02:00
parent 012ff7c604
commit d9fd4dac35
3 changed files with 37 additions and 4 deletions

View File

@ -321,7 +321,8 @@ export default {
default_billing: true
}]
},
password: this.password
password: this.password,
accepted_terms: this.acceptedTerms
};
register(registrationData).then((response) => {
@ -331,8 +332,17 @@ export default {
})
.catch((error) => {
console.warn(error);
if (error.response.data.message && error.response.data.message === 'Ein Kunde mit der gleichen E-Mail-Adresse existiert bereits in einer zugeordneten Website.') {
this.emailErrors = ['Die angegebene E-Mail ist bereits registriert.'];
if (error.response.data.message) {
switch(error.response.data.message) {
case 'Ein Kunde mit der gleichen E-Mail-Adresse existiert bereits in einer zugeordneten Website.':
this.emailErrors = ['Die angegebene E-Mail ist bereits registriert.'];
break;
case 'Die AGBs und die Datenschutzbestimmungen müssen akzeptiert werden':
this.acceptedTermsError = ['Die AGBs und die Datenschutzbestimmungen müssen akzeptiert werden'];
break;
default:
this.registrationError = 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie nochmals.';
}
} else {
this.registrationError = 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie nochmals.';
}

View File

@ -61,7 +61,8 @@ DATA = {
'default_billing': True,
}
],
'password': '123454abasfd'
'password': '123454abasfd',
'accepted_terms': True
}
}
@ -84,3 +85,11 @@ class ProxyTest(TestCase):
response = self.client.post(reverse('api:registration:proxy'), json.dumps(DATA), content_type="application/json")
self.assertEquals(response.json()['message'], 'Ein Kunde mit der gleichen E-Mail-Adresse existiert bereits in einer zugeordneten Website.')
def test_requires_accepted_terms(self):
del DATA['customer']['accepted_terms']
response = self.client.post(reverse('api:registration:proxy'), json.dumps(DATA), content_type="application/json")
self.assertEquals(response.status_code, 400)
self.assertEquals(response.json()['message'], 'Die AGBs und die Datenschutzbestimmungen müssen akzeptiert werden')

View File

@ -20,6 +20,14 @@ class RegistrationProxyView(View):
def post(self, request, *args, **kwargs):
hep_client = HepClient()
data = json.loads(request.body)
if not self.terms_accepted(data['customer']):
return JsonResponse(
{
'message': 'Die AGBs und die Datenschutzbestimmungen müssen akzeptiert werden'
},
status=400)
data['customer']['group_id'] = 5
try:
@ -32,3 +40,9 @@ class RegistrationProxyView(View):
return JsonResponse(response_data)
def terms_accepted(self, customer):
if 'accepted_terms' in customer and customer['accepted_terms']:
del customer['accepted_terms']
return True
return False