SRNI-2005/ctf
0
1from flask_babel import lazy_gettext as _l2from wtforms import PasswordField, StringField3from wtforms.fields.html5 import EmailField4from wtforms.validators import InputRequired5 6from CTFd.forms import BaseForm7from CTFd.forms.fields import SubmitField8from CTFd.forms.users import (9 attach_custom_user_fields,10 attach_registration_code_field,11 attach_user_bracket_field,12 build_custom_user_fields,13 build_registration_code_field,14 build_user_bracket_field,15)16from CTFd.utils import get_config17 18 19def RegistrationForm(*args, **kwargs):20 password_min_length = int(get_config("password_min_length", default=0))21 password_description = _l("Password used to log into your account")22 if password_min_length:23 password_description += _l(24 f" (Must be at least {password_min_length} characters)"25 )26 27 class _RegistrationForm(BaseForm):28 name = StringField(29 _l("User Name"),30 description="Your username on the site",31 validators=[InputRequired()],32 render_kw={"autofocus": True},33 )34 email = EmailField(35 _l("Email"),36 description="Never shown to the public",37 validators=[InputRequired()],38 )39 password = PasswordField(40 _l("Password"),41 description=password_description,42 validators=[InputRequired()],43 )44 submit = SubmitField(_l("Submit"))45 46 @property47 def extra(self):48 return (49 build_custom_user_fields(50 self, include_entries=False, blacklisted_items=()51 )52 + build_registration_code_field(self)53 + build_user_bracket_field(self)54 )55 56 attach_custom_user_fields(_RegistrationForm)57 attach_registration_code_field(_RegistrationForm)58 attach_user_bracket_field(_RegistrationForm)59 60 return _RegistrationForm(*args, **kwargs)61 62 63class LoginForm(BaseForm):64 name = StringField(65 _l("User Name or Email"),66 validators=[InputRequired()],67 render_kw={"autofocus": True},68 )69 password = PasswordField(_l("Password"), validators=[InputRequired()])70 submit = SubmitField(_l("Submit"))71 72 73class ConfirmForm(BaseForm):74 submit = SubmitField(_l("Send Confirmation Email"))75 76 77class ResetPasswordRequestForm(BaseForm):78 email = EmailField(79 _l("Email"), validators=[InputRequired()], render_kw={"autofocus": True}80 )81 submit = SubmitField(_l("Submit"))82 83 84class ResetPasswordForm(BaseForm):85 password = PasswordField(86 _l("Password"), validators=[InputRequired()], render_kw={"autofocus": True}87 )88 submit = SubmitField(_l("Submit"))89 