Beispiel #1
0
class UpdatePasswordForm(FlaskForm):
    old_password = PasswordField('Password', validators=[])
    new_password = PasswordField('Password', validators=[])
    confirm_password = PasswordField('Confirm Password',
                                     validators=[EqualTo('password')])
    submit = SubmitField('Update')
Beispiel #2
0
class ResetPasswordForm(FlaskForm):
    password = PasswordField("Password", validators=[DataRequired()])
    confirm_password = PasswordField(
        "Confirm Password", validators=[DataRequired(),
                                        EqualTo("password")])
    submit = SubmitField("Rest Password")
from flask_login import current_user
from flask_wtf import FlaskForm
from flask_wtf.file import FileAllowed
from wtforms import StringField, PasswordField, SubmitField, BooleanField, FileField
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError

from flaskblog.users.models import User

common_validators = [DataRequired()]
username_validators = common_validators + [Length(min=5, max=20)]
email_validators = common_validators + [Email()]
confirm_password_validators = common_validators + [EqualTo('password')]


class RegistrationForm(FlaskForm):

    username = StringField("Username", validators=username_validators)
    email = StringField("Email", validators=email_validators)
    password = PasswordField("Password", validators=common_validators)
    confirm_password = PasswordField("Confirm Password",
                                     validators=confirm_password_validators)

    submit = SubmitField("Sign Up")

    def validate_username(self, username):
        user = User.query.filter_by(username=username.data).first()
        if user:
            raise ValidationError('The username is already taken')

    def validate_email(self, email):
        user = User.query.filter_by(email=email.data).first()
Beispiel #4
0
class RegistrationForm(FlaskForm):
	username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
	email = StringField('Email', validators=[DataRequired(), Email()])
	password = PasswordField('Password', validators=[DataRequired()])
	confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
	submit = SubmitField('Sign Up') 
Beispiel #5
0
class RegistrationForm(FlaskForm):
	email = StringField('Your Email Address',validators=[Required(),Email()])
	username = StringField('Enter your username',validators = [Required()])
	password = PasswordField('Password',validators = [Required(), EqualTo('password_confirm',message = 'Passwords must match')])
	password_confirm = PasswordField('Confirm Passwords',validators = [Required()])
	submit = SubmitField('Sign Up')
Beispiel #6
0
class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[Optional(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    password2 = PasswordField('Repeat Password',
                              validators=[DataRequired(), EqualTo('password')])

    # There's no way to get a field's label at validate() time.
    # But it's possible to get the contents of a StringField.
    # So make the captcha question a readonly string field,
    # out of the tab order; it will be styled with CSS to make
    # it not look like an input field.
    capq = StringField("question",
                       render_kw={ "readonly": True,  "tabIndex":"-1" })
    capa = StringField("question", validators=[DataRequired()])

    submit = SubmitField('Register')

    def validate(self, *args, **kwargs):
        if not super().validate(*args, **kwargs):
            return False
        return True

    def validate_capa(self, capa):
        if not self.captcha:
            print("* validate_capa has no captcha object", file=sys.stderr)

        if 'captcha' in session:
            question = session['captcha']
            if question != self.capq.data:
                print("validate_capq: '%s' didn't match session '%s'"
                      % (self.capq.data, session['captcha']),
                      request.remote_addr, file=sys.stderr)
        else:
            print("no captcha in session", file=sys.stderr)

        if not question:
            print("validate_capa: Couldn't get captcha question from session",
                  request.remote_addr, file=sys.stderr)
            question = self.capq.data

        if not self.captcha.is_answer_correct(capa.data, question=question):
            print("validate_capa: Wrong answer '%s' for captcha question '%s'"
                  % (capa.data, question), request.remote_addr,
                  file=sys.stderr)
            print("  Valid answers are", self.captcha.QandA[question])

            raise ValidationError("No, try again")

    def validate_username(self, username):
        # Some simple logic to guard against attacks,
        # like where spammers put spam with links in the username field
        # hoping that the confirmation mail will send their spam payload.
        if '://' in username.data:
            print("ATTACK ALERT: Bogus username from IP", request.remote_addr,
                  ":", username.data, file=sys.stderr)
            raise ValidationError("That doesn't look like a username")
        if len(username.data) > 60:
            print("ATTACK ALERT: Long username from IP", request.remote_addr,
                  ":", username.data, file=sys.stderr)
            raise ValidationError("Please use a shorter username")

        user = User.query.filter_by(username=username.data).first()
        if user is not None:
            print("Someone tried to re-use username", username.data,
                  "from IP", request.remote_addr, file=sys.stderr)
            raise ValidationError('Please use a different username.')

    def validate_email(self, email):
        user = User.query.filter_by(email=email.data).first()
        if user is not None:
            print("WARNING: Someone tried to re-use existing email",
                  email.data, "from IP", request.remote_addr, file=sys.stderr)
            raise ValidationError('That email address is already in use.')
Beispiel #7
0
class ResetPasswordForm(FlaskForm):
    password = PasswordField('Password', validators=[DataRequired()], default=False)
    password_confirm = PasswordField('Confirm Password',
                                     validators=[EqualTo('password',
                                                         'Password and Confirm Password did not match')])
    submit = SubmitField('Reset password')
Beispiel #8
0
class NewPasswordForm(FlaskForm):
    password = PasswordField('New Password',validators=[DataRequired()],render_kw={"placeholder": "Password"})
    password2 = PasswordField('Comfirmed Password', validators=[DataRequired(), EqualTo('password','unmatched')],render_kw={"placeholder": "Password"})
    submit = SubmitField('Confirm')
Beispiel #9
0
class RegisterForm(FlaskForm):
     name = StringField('Username', validators=[DataRequired(), Length(min=6, max=25)])
     email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)])
     password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=40)])
     confirm = PasswordField('Repeat Password', validators=[DataRequired(), EqualTo('password')])
Beispiel #10
0
class RegistrationForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired(), Length(3, 15, message='between 3 to 15 characters')])
    email = StringField('Email', validators=[DataRequired(), Email(), email_exists])
    password = PasswordField('Password', validators=[DataRequired(), Length(5), EqualTo('confirm', message='password must match')])
    confirm = PasswordField('Confirm', validators=[DataRequired()])
    submit = SubmitField('Register')
class AdminForm(FlaskForm):
    # 管理员名称
    name = StringField(
        # 标签
        label="管理员名称",
        # 验证器
        validators=[
            DataRequired("请输入管理员名称!")
        ],
        # 描述
        description="管理员名称",
        # 附加选项
        render_kw={
            "class": "form-control",
            "placeholder": "请输入管理员名称!"
        },
    )
    # 管理员密码
    pwd = PasswordField(
        label="管理员密码",
        validators=[
            DataRequired("请输入管理员密码!")
        ],
        description="管理员密码",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入管理员密码!"
        },
    )
    # 管理员重复密码
    repwd = PasswordField(
        label="管理员重复密码",
        validators=[
            DataRequired("请输入管理员重复密码!"),
            EqualTo('pwd', message="两次密码不一致!")
        ],
        description="管理员重复密码",
        render_kw={
            "class": "form-control",
            "placeholder": "请输入管理员重复密码!"
        },
    )
    # 所属角色
    role_id = SelectField(
        label="所属角色",
        # validators=[
        #     DataRequired("请选择所属角色!")
        # ],
        coerce=int,
        choices=[(v.id, v.name) for v in role_list],
        render_kw={
            "class": "form-control"
        }

    )
    # 按钮
    submit = SubmitField(
        '编辑',
        render_kw={
            "class": "btn btn-primary",
        }
    )
Beispiel #12
0
class LoginForm(FlaskForm):
    """Form for logging a user in."""

    email = StringField("Email Address", validators=[InputRequired(message="Please enter your email here."), Email()])
    password = PasswordField('Password', [InputRequired(), EqualTo('confirm', message='Passwords must match')])
    confirm  = PasswordField('Repeat Password')
class ChangePasswordForm(FlaskForm):
    password = PasswordField(u'Password', validators=[DataRequired()])
    password2 = PasswordField(u'Repeat Password',
                              validators=[DataRequired(),
                                          EqualTo('password')])
    submit = SubmitField(u'Change My Password')
Beispiel #14
0
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.fields.html5 import EmailField
from wtforms.validators import DataRequired, EqualTo, Length

password_validators = [
    DataRequired(),
    EqualTo('confirm', message='As senhas não conferem'),
    Length(min=8, max=32, message='Senha deve ter entre 8 e 32 caracteres.')
]


class UserForm(FlaskForm):
    name = StringField('Nome', validators=[DataRequired()])
    email = EmailField('Email', validators=[DataRequired()])
    password = PasswordField('Senha', validators=password_validators)
    confirm = PasswordField('Confirme a senha', validators=password_validators)
    submit_button = SubmitField('Salvar')
Beispiel #15
0
class RegistForm(FlaskForm):
    '''会员注册'''
    name = StringField(
        label=u"昵称",
        validators=[DataRequired(u'请输入昵称')],  #设置为必填项目
        description=u"昵称",
        render_kw={
            "class": "form-control input-lg",
            "placeholder": u"请输入昵称!",
            #"required":"required"     #html提示不能为空
        })
    email = StringField(
        label=u"邮箱",
        validators=[DataRequired(u'请输入邮箱'),
                    Email(u"邮箱格式不正确!")],  #设置为必填项目
        description=u"邮箱",
        render_kw={
            "class": "form-control input-lg",
            "placeholder": u"请输入邮箱!",
            #"required":"required"     #html提示不能为空
        })
    phone = StringField(
        label=u"手机",
        validators=[
            DataRequired(u'请输入手机号'),
            Regexp("1[3458]\\d{9}", message=u"号码格式不正确")
        ],  #设置为必填项目
        description=u"手机",
        render_kw={
            "class": "form-control input-lg",
            "placeholder": u"请输入手机号!",
            #"required":"required"     #html提示不能为空
        })
    pwd = PasswordField(
        label=u"密码",
        validators=[DataRequired(u'请输入密码')],
        description=u"密码",
        render_kw={
            "class": "form-control input-lg",
            "placeholder": u"请输入密码!",
            #"required":"required"
        })
    repwd = PasswordField(label=u"确认密码",
                          validators=[
                              DataRequired(u'请再次输入密码'),
                              EqualTo('pwd', message=u"两次密码不一致!")
                          ],
                          description=u"确认密码",
                          render_kw={
                              "class": "form-control input-lg",
                              "id": "input_re_pwd",
                              "placeholder": u"请再次输入密码!"
                          })
    submit = SubmitField(label=u"注册",
                         render_kw={
                             "class": "btn btn-lg btn-success btn-block",
                         })

    def validate_name(self, field):
        name = field.data
        user = User.query.filter_by(name=name).count()
        if user == 1:
            raise ValidationError(u"该昵称已经存在")

    def validate_email(self, field):
        email = field.data
        email = User.query.filter_by(email=email).count()
        if email == 1:
            raise ValidationError(u"该邮箱已经存在")

    def validate_phone(self, field):
        phone = field.data
        phone = User.query.filter_by(phone=phone).count()
        if phone == 1:
            raise ValidationError(u"该手机已经存在")
class UserChangePasswordForm(FlaskForm):
    """Form for changing user password."""

    password_old = PasswordField('Old Password', validators=[DataRequired()])
    password = PasswordField('New Password', validators=[DataRequired(), Length(min=6), EqualTo('confirm', message='Passwords must match')])
    confirm = PasswordField('Repeat Password')
Beispiel #17
0
class RegistrationForm(FlaskForm):

    username = StringField(_l('Username'), validators=[DataRequired()])
    email = StringField(_l('Email'), validators=[DataRequired(), Email()])
    password = PasswordField(_l('Password'), validators=[DataRequired()])
    password_repeat = PasswordField(_l('Repeat Password'), validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField(_l('Register'))

    def validate_username(self, username):

        user = User.query.filter_by(username=username.data).first()

        if user is not None:

            raise ValidationError(_('That username is already taken. Please use another.'))

    def validate_email(self, email):

        user = User.query.filter_by(email=email.data).first()

        if user is not None:

            raise ValidationError(_('That email address is already taken. Please use another.'))
Beispiel #18
0
class PasswordResetForm(FlaskForm):
    password = PasswordField('New Password', validators=[DataRequired(), EqualTo('password2', message='Passwords must match.')])
    password2 = PasswordField('Confirm Password', validators=[DataRequired()])
    submit = SubmitField('Reset Password')
Beispiel #19
0
class ResetPasswordForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Length(1, 254), Email()])
    password = PasswordField('Password', validators=[DataRequired(),
                                                     Length(8, 128), EqualTo('password2')])
    password2 = PasswordField('Confirm Password', validators=[DataRequired()])
    submit = SubmitField()
Beispiel #20
0
class ChangePasswordForm(FlaskForm):
    old_password = PasswordField('Old password', validators=[Required()])
    password = PasswordField('New password', validators=[
        Required(), EqualTo('password2', message='Passwords must match')])
    password2 = PasswordField('Confirm new password', validators=[Required()])
    submit = SubmitField('Update Password')
Beispiel #21
0
class RegistForm(FlaskForm):
    name = StringField(label="昵称",
                       validators=[DataRequired("请输入昵称!")],
                       description="昵称",
                       render_kw={
                           "class": "form-control input-lg",
                           "placeholder": "请输入昵称!",
                       })
    email = StringField(label="邮箱",
                        validators=[DataRequired("请输入邮箱!"),
                                    Email("邮箱格式不正确!")],
                        description="邮箱",
                        render_kw={
                            "class": "form-control input-lg",
                            "placeholder": "请输入邮箱!",
                        })
    phone = StringField(label="手机",
                        validators=[
                            DataRequired("请输入手机!"),
                            Regexp("1[3458]\\d{9}", message="手机格式不正确!")
                        ],
                        description="手机",
                        render_kw={
                            "class": "form-control input-lg",
                            "placeholder": "请输入手机!",
                        })
    pwd = PasswordField(label="密码",
                        validators=[DataRequired("请输入密码!")],
                        description="密码",
                        render_kw={
                            "class": "form-control input-lg",
                            "placeholder": "请输入密码!",
                        })
    repwd = PasswordField(label="确认密码",
                          validators=[
                              DataRequired("请输入确认密码!"),
                              EqualTo('pwd', message="两次密码不一致!")
                          ],
                          description="确认密码",
                          render_kw={
                              "class": "form-control input-lg",
                              "placeholder": "请输入确认密码!",
                          })
    submit = SubmitField('注册',
                         render_kw={
                             "class": "btn btn-lg btn-success btn-block",
                         })

    def validate_name(self, field):
        name = field.data
        user = User.query.filter_by(name=name).count()
        if user == 1:
            raise ValidationError("昵称已经存在!")

    def validate_email(self, field):
        email = field.data
        user = User.query.filter_by(email=email).count()
        if user == 1:
            raise ValidationError("邮箱已经存在!")

    def validate_phone(self, field):
        phone = field.data
        user = User.query.filter_by(phone=phone).count()
        if user == 1:
            raise ValidationError("手机号码已经存在!")
Beispiel #22
0
class RegisterForm(FlaskForm):
    first_name = StringField('First Name', validators=[InputRequired(),Length(min=4,max=35)])
    last_name = StringField('Last Name', validators=[InputRequired(),Length(min=4,max=35)])
    grade = IntegerField('Level', validators=[ NumberRange(min=9,max=12)])
    email = StringField('Email', validators=[InputRequired(),Email()])
    password = PasswordField('Password', validators=[InputRequired(),Length(min=10,max=128), EqualTo('confirm', message="Passwords must match")])
    confirm = PasswordField('Repeat Password')
    track = SelectField('Track', choices=[('Computer Security','Computer Security'),('Hardware','Hardware'),('Graphics','Graphics'),('Algorithms','Algorithms')])
    homeroom = StringField('Homeroom', validators=[InputRequired(),Length(min=4,max=5)])
    profile_image = FileField('Profile Image')

    def validate_email(self,email):
        user = User.query.filter_by(email=email.data).first()
        if user is not None:
            raise ValidationError('Please use a different email address')
Beispiel #23
0
class ChangePasswordForm(Form):
    old_password = PasswordField(u'老密码', validators=[Required()])
    password = PasswordField(u'新密码', validators=[
        Required(), EqualTo('password2', message=u'密码不匹配')])
    password2 = PasswordField(u'确认密码', validators=[Required()])
    submit = SubmitField(u'更新密码')
Beispiel #24
0
class ResetPasswordForm(FlaskForm):
    password = PasswordField('Password', validators=[InputRequired(), Length(min=10,max=128), EqualTo('confirm', message="Passwords must match")])
    confirm = PasswordField('Repeat Password')
Beispiel #25
0
class SignupForm(FlaskForm):
        email_addr = TextField('', validators=[InputRequired(), Email()])
        summoner = TextField('', validators=[InputRequired()])
        password = PasswordField('', validators=[DataRequired(), EqualTo('confirm', message='Passwords must match')])
        confirm = PasswordField('')
        submit = SubmitField('Submit')
Beispiel #26
0
class RegisterForm(FlaskForm):
    username = StringField(label='昵称',
                           validators=[
                               DataRequired('请输入昵称!'),
                           ],
                           description='昵称',
                           render_kw={
                               'class': 'form-control input-lg',
                               'placeholder': '请输入昵称!',
                           })
    email = StringField(
        label='邮箱',
        validators=[
            DataRequired('请输入邮箱!'),
            # 验证当前字段是否符合邮箱格式
            Email(message='邮箱格式不正确!')
        ],
        description='邮箱',
        render_kw={
            'class': 'form-control input-lg',
            'placeholder': '请输入邮箱!'
        })
    pwd1 = PasswordField(label='密码',
                         validators=[
                             DataRequired('请输入密码!'),
                         ],
                         description='密码',
                         render_kw={
                             'class': 'form-control input-lg',
                             'placeholder': '请输入密码!'
                         })
    pwd2 = PasswordField(
        label='确认密码',
        validators=[
            DataRequired('请输入确认密码!'),
            # 验证器
            EqualTo('pwd', message='两次密码不一致!')
        ],
        description='确认',
        render_kw={
            'class': 'form-control input-lg',
            'placeholder': '请输入确认密码!'
        })
    submit = SubmitField('注册',
                         render_kw={
                             'class': 'btn btn-lg btn-success btn-block',
                         })

    # 验证昵称的唯一性
    def validate_name(self, field):
        name = field.data
        user = User.query.filter_by(name=name).count()
        if user == 1:
            raise ValidationError(message='昵称已存在!')

    # 验证邮箱的唯一性
    def validate_email(self, field):
        email = field.data
        user = User.query.filter_by(email=email).count()
        if user == 1:
            raise ValidationError(message='邮箱已存在!')

    # 验证电话的唯一性
    def validate_phone(self, field):
        phone = field.data
        user = User.query.filter_by(phone=phone).count()
        if user == 1:
            raise ValidationError(message='手机号码已存在!')
Beispiel #27
0
class ResetPasswordForm(FlaskForm):
    password = PasswordField('Password', validators=[DataRequired()])
    confirm_password = PasswordField(
        'Confirm Password', validators=[DataRequired(),
                                        EqualTo('password')])
    submit = SubmitField('Reset Password')
Beispiel #28
0
class RegistrationForm(FlaskForm):
    username = StringField('username', validators=[InputRequired()])
    password = PasswordField('password', validators=[InputRequired()])
    confirm_password = PasswordField('confirm_password', validators=[InputRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')
Beispiel #29
0
class ResetPasswordForm(FlaskForm):
    password = PasswordField('Password', validators=[DataRequired()])
    password2 = PasswordField('Repeat Password',
                              validators=[DataRequired(),
                                          EqualTo('password')])
    submit = SubmitField('Request Password Reset')
Beispiel #30
0
class ResigeationForm(FlaskForm):
    email = StringField('Email',validators=[Email()])
    password = PasswordField('Input Password',validators=[InputRequired(),Length(min=8,max=80)])
    confirm = PasswordField('Confirm Password', validators=[EqualTo('password',message='Password does not match')])
    username = StringField('Username',validators=[InputRequired(),Length(min=4,max=15)])
    accept_tos = BooleanField('I accept the Term of Service',validators=[InputRequired()])