@ -4,13 +4,14 @@ import uuid
from urllib.parse import urlparse , urljoin
from urllib.parse import urlparse , urljoin
import flask
import flask
from flask import Flask , redirect , render_template , request , g
from flask import Flask , redirect , render_template , request , g , flash
from flask_login import LoginManager , login_required , login_user , logout_user , UserMixin , \
from flask_login import LoginManager , login_required , login_user , logout_user , UserMixin , \
current_user
current_user
from flask_wtf import CSRFProtect
from flask_wtf import CSRFProtect
from db import get_db , get_registration_codes , add_registration_code , \
from db import get_db , get_registration_codes , add_registration_code , \
expire_registration_code , delete_registration_code , get_registered_users
expire_registration_code , delete_registration_code , get_registered_users , \
add_registered_user
from forms import RegistrationForm , LoginForm , RegistrationCodeForm , \
from forms import RegistrationForm , LoginForm , RegistrationCodeForm , \
ExpireRegistrationCodeForm
ExpireRegistrationCodeForm
@ -53,6 +54,12 @@ def create_app():
app = create_app ( )
app = create_app ( )
def flash_form_errors ( form ) :
if hasattr ( form , ' errors ' ) and len ( form . errors ) > 0 :
for error in form . errors . items ( ) :
flash ( " %s : %s " % ( form [ error [ 0 ] ] . label . text , error [ 1 ] ) , ' error ' )
class User ( UserMixin ) :
class User ( UserMixin ) :
username : str
username : str
token : str
token : str
@ -92,9 +99,14 @@ def index():
def registration ( ) :
def registration ( ) :
form = RegistrationForm ( )
form = RegistrationForm ( )
if form . validate_on_submit ( ) :
if form . validate_on_submit ( ) :
add_registered_user ( form . registration_code . data , form . username . data )
return redirect ( ' /success ' )
return redirect ( ' /success ' )
flash_form_errors ( form )
if ' registrationCode ' in request . values :
if ' registrationCode ' in request . values :
form . registration_code . data = request . values [ ' registrationCode ' ]
form . registration_code . data = request . values [ ' registrationCode ' ]
return render_template ( ' register.html ' , form = form )
return render_template ( ' register.html ' , form = form )
@ -118,6 +130,9 @@ def admin_add_registration_code():
max_usages = form . max_usages . data
max_usages = form . max_usages . data
add_registration_code ( expiration_time , max_usages )
add_registration_code ( expiration_time , max_usages )
redirect ( ' /admin ' )
redirect ( ' /admin ' )
flash_form_errors ( form )
return redirect ( ' /admin ' )
return redirect ( ' /admin ' )
@ -131,6 +146,9 @@ def admin_expire_registration_code():
elif form . delete . data :
elif form . delete . data :
delete_registration_code ( form . registration_code . data )
delete_registration_code ( form . registration_code . data )
redirect ( ' /admin ' )
redirect ( ' /admin ' )
flash_form_errors ( form )
return redirect ( ' /admin ' )
return redirect ( ' /admin ' )
@ -154,6 +172,8 @@ def admin_login():
else :
else :
return redirect ( ' /admin ' )
return redirect ( ' /admin ' )
flash_form_errors ( form )
return render_template ( ' login.html ' , form = form )
return render_template ( ' login.html ' , form = form )