Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
4 years ago
|
"""
|
||
|
Registrace uživatelů k existujícím osobám
|
||
|
|
||
|
V tomto souboru bude asi všechno, co je relevantní (kromě template), protože to
|
||
|
je dostatečně malá a jednorázová věc.
|
||
|
|
||
|
Proto všechno kromě view začíná podtržítkem, aby se to nenatáhlo jako součást
|
||
|
seminar.views
|
||
|
"""
|
||
|
|
||
|
#TODO: Logování (tohle logovat chce skoro určitě)
|
||
|
|
||
|
from django.forms import Form
|
||
|
from django.views.generic.edit import FormView
|
||
|
import hmac
|
||
|
|
||
|
from django.conf.settings import AUTH_USER_MODEL, SECRET_KEY
|
||
|
from seminar.models import Osoba
|
||
|
|
||
|
class DodatecnaRegistraceUzivateleView(FormView):
|
||
|
form = _RegistraceUzivateleForm
|
||
|
template_name = ...
|
||
|
success_url_pattern = ...
|
||
|
|
||
|
def form_valid(self, form):
|
||
|
pass
|
||
|
|
||
|
class KontrolaUdajuASouhlasyView(FormView):
|
||
|
...
|
||
|
|
||
|
class _RegistraceUzivateleForm(Form):
|
||
|
#model = AUTH_USER_MODEL
|
||
|
# Zkopírováno z přihlášky :-)
|
||
|
username = forms.CharField(label='Přihlašovací jméno',
|
||
|
max_length=256,
|
||
|
required=True,
|
||
|
help_text='Tímto jménem se následně budeš přihlašovat pro odevzdání řešení a další činnosti v semináři')
|
||
|
password = forms.CharField(
|
||
|
label='Heslo',
|
||
|
max_length=256,
|
||
|
required=True,
|
||
|
widget=forms.PasswordInput())
|
||
|
password_check = forms.CharField(
|
||
|
label='Ověření hesla',
|
||
|
max_length=256,
|
||
|
required=True,
|
||
|
widget=forms.PasswordInput())
|
||
|
|
||
|
# Dodatečné fieldy + token…
|
||
|
token = ...
|
||
|
verifikace_TODO = ... # TODO: Co verifikovat
|
||
|
|
||
|
# TODO: clean_username, verifikace …
|
||
|
|
||
|
|
||
|
# Pozor, tokeny existují dva: jeden do URL do mailu, druhý do hidden položky ve formuláři.
|
||
|
|
||
|
def _gen_token(usecase: str, data: dict[str, object]):
|
||
|
...
|
||
|
|
||
|
def _verify_token(usecase: str, data: dict[str, object]):
|
||
|
...
|
||
|
|
||
|
def _invite(osoba: Osoba):
|
||
|
"""
|
||
|
Pošle dané osobě e-mail s odkazem na registraci.
|
||
|
"""
|