From 0df3cb8509314d1aac099d2b47aa3731321bc115 Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Tue, 18 May 2021 22:44:26 +0200 Subject: [PATCH] =?UTF-8?q?Kontrola=20PS=C4=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/views/doregistrace.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/seminar/views/doregistrace.py b/seminar/views/doregistrace.py index d33aae53..9331349f 100644 --- a/seminar/views/doregistrace.py +++ b/seminar/views/doregistrace.py @@ -97,8 +97,20 @@ class DodatecnaRegistraceUzivateleView(TemplateResponseMixin, View): ) osoba_id = int(token_data['osoba']) osoba = m.Osoba.objects.get(id=osoba_id) + # Zkontrolovat verifikační field - ... + kanonicke_psc = lambda x : ''.join(filter(str.isdigit, x)) + psc = kanonicke_psc(form_data['PSC_verifikace']) + realne_psc = kanonicke_psc(osoba.psc) + # Much crypto, very secure :-) + if not hmac.compare_digest(psc, realne_psc): + return render_to_response( + context={ + 'error': 'Nesedí verifikační pole', + }, + status_code=400, + ) + # Vyrobit uživatele u = User.objects.create_user( username=form_data['username'], @@ -134,7 +146,9 @@ class RegistraceUzivateleForm(Form): # Dodatečné fieldy + token… token = forms.CharField(widget=forms.HiddenInput(), required=True) - verifikace_TODO = ... # TODO: Co verifikovat + # TODO: Tohle asi blízký útočník (e.g. zapomenuté přihlášení na školním počítači) umí odhalit. + PSC_verifikace = forms.CharField(max_length=8, required=True, label="PSČ tvého bydliště", + help_text="Chceme si jen ověřit, že se někdo cizí nezmocnil tvého odkazu") # TODO: clean_username, verifikace …