|
|
@ -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 … |
|
|
|
|
|
|
|