40 lines
1.7 KiB
Python
40 lines
1.7 KiB
Python
"""Auth forms (Flask-WTF). CSRF automatic. Labels wrapped for i18n."""
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import StringField, PasswordField, BooleanField, SubmitField
|
|
from wtforms.validators import DataRequired, Email, Length, EqualTo
|
|
from flask_babel import lazy_gettext as _l
|
|
|
|
|
|
class RegisterForm(FlaskForm):
|
|
display_name = StringField(_l("Display name"),
|
|
validators=[DataRequired(), Length(2, 80)])
|
|
email = StringField(_l("Email"),
|
|
validators=[DataRequired(), Email(), Length(max=255)])
|
|
password = PasswordField(_l("Password"),
|
|
validators=[DataRequired(), Length(min=8, max=128)])
|
|
confirm = PasswordField(_l("Confirm password"),
|
|
validators=[DataRequired(), EqualTo("password",
|
|
message=_l("Passwords must match"))])
|
|
submit = SubmitField(_l("Create account"))
|
|
|
|
|
|
class LoginForm(FlaskForm):
|
|
email = StringField(_l("Email"), validators=[DataRequired(), Email()])
|
|
password = PasswordField(_l("Password"), validators=[DataRequired()])
|
|
remember = BooleanField(_l("Remember me"))
|
|
submit = SubmitField(_l("Sign in"))
|
|
|
|
|
|
class ResetRequestForm(FlaskForm):
|
|
email = StringField(_l("Email"), validators=[DataRequired(), Email()])
|
|
submit = SubmitField(_l("Send reset link"))
|
|
|
|
|
|
class ResetForm(FlaskForm):
|
|
password = PasswordField(_l("New password"),
|
|
validators=[DataRequired(), Length(min=8, max=128)])
|
|
confirm = PasswordField(_l("Confirm password"),
|
|
validators=[DataRequired(), EqualTo("password",
|
|
message=_l("Passwords must match"))])
|
|
submit = SubmitField(_l("Reset password"))
|