forms.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. # -*- coding: utf-8 -*-
  2. """
  3. flaskbb.auth.forms
  4. ~~~~~~~~~~~~~~~~~~
  5. It provides the forms that are needed for the auth views.
  6. :copyright: (c) 2014 by the FlaskBB Team.
  7. :license: BSD, see LICENSE for more details.
  8. """
  9. import logging
  10. from flask_babelplus import lazy_gettext as _
  11. from wtforms import (BooleanField, HiddenField, PasswordField, SelectField,
  12. StringField, SubmitField)
  13. from wtforms.validators import (DataRequired, Email, EqualTo, InputRequired,
  14. regexp)
  15. from flaskbb.utils.fields import RecaptchaField
  16. from flaskbb.utils.forms import FlaskBBForm
  17. logger = logging.getLogger(__name__)
  18. USERNAME_RE = r'^[\w.+-]+$'
  19. is_valid_username = regexp(
  20. USERNAME_RE, message=_("You can only use letters, numbers or dashes.")
  21. )
  22. class LoginForm(FlaskBBForm):
  23. login = StringField(
  24. _("Username or Email address"),
  25. validators=[
  26. DataRequired(
  27. message=_("Please enter your username or email address.")
  28. )
  29. ]
  30. )
  31. password = PasswordField(
  32. _("Password"),
  33. validators=[DataRequired(message=_("Please enter your password."))]
  34. )
  35. remember_me = BooleanField(_("Remember me"), default=False)
  36. submit = SubmitField(_("Login"))
  37. recaptcha = HiddenField(_("Captcha"))
  38. class LoginRecaptchaForm(LoginForm):
  39. recaptcha = RecaptchaField(_("Captcha"))
  40. class RegisterForm(FlaskBBForm):
  41. username = StringField(
  42. _("Username"),
  43. validators=[
  44. DataRequired(message=_("A valid username is required")),
  45. is_valid_username
  46. ]
  47. )
  48. email = StringField(
  49. _("Email address"),
  50. validators=[
  51. DataRequired(message=_("A valid email address is required.")),
  52. Email(message=_("Invalid email address."))
  53. ]
  54. )
  55. password = PasswordField(
  56. _('Password'),
  57. validators=[
  58. InputRequired(),
  59. EqualTo('confirm_password', message=_('Passwords must match.'))
  60. ]
  61. )
  62. confirm_password = PasswordField(_('Confirm password'))
  63. recaptcha = RecaptchaField(_("Captcha"))
  64. language = SelectField(_('Language'))
  65. accept_tos = BooleanField(
  66. _("I accept the Terms of Service"),
  67. validators=[DataRequired(message=_("Please accept the TOS."))],
  68. default=True
  69. )
  70. submit = SubmitField(_("Register"))
  71. class ReauthForm(FlaskBBForm):
  72. password = PasswordField(
  73. _('Password'),
  74. validators=[DataRequired(message=_("Please enter your password."))]
  75. )
  76. submit = SubmitField(_("Refresh Login"))
  77. class ForgotPasswordForm(FlaskBBForm):
  78. email = StringField(
  79. _('Email address'),
  80. validators=[
  81. DataRequired(message=_("A valid email address is required.")),
  82. Email()
  83. ]
  84. )
  85. recaptcha = RecaptchaField(_("Captcha"))
  86. submit = SubmitField(_("Request Password"))
  87. class ResetPasswordForm(FlaskBBForm):
  88. token = HiddenField('Token')
  89. email = StringField(
  90. _('Email address'),
  91. validators=[
  92. DataRequired(message=_("A valid email address is required.")),
  93. Email()
  94. ]
  95. )
  96. password = PasswordField(
  97. _('Password'),
  98. validators=[
  99. InputRequired(),
  100. EqualTo('confirm_password', message=_('Passwords must match.'))
  101. ]
  102. )
  103. confirm_password = PasswordField(_('Confirm password'))
  104. submit = SubmitField(_("Reset password"))
  105. class RequestActivationForm(FlaskBBForm):
  106. username = StringField(
  107. _("Username"),
  108. validators=[
  109. DataRequired(message=_("A valid username is required.")),
  110. is_valid_username
  111. ]
  112. )
  113. email = StringField(
  114. _("Email address"),
  115. validators=[
  116. DataRequired(message=_("A valid email address is required.")),
  117. Email(message=_("Invalid email address."))
  118. ]
  119. )
  120. submit = SubmitField(_("Send Confirmation Mail"))