You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
# -*- coding: utf-8 -*-
|
|
"""Public forms."""
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import PasswordField, StringField
|
|
from wtforms.validators import DataRequired
|
|
|
|
from harambee_led_bord.user.models import User
|
|
|
|
|
|
class LoginForm(FlaskForm):
|
|
"""Login form."""
|
|
|
|
username = StringField("Username", validators=[DataRequired()])
|
|
password = PasswordField("Password", validators=[DataRequired()])
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
"""Create instance."""
|
|
super(LoginForm, self).__init__(*args, **kwargs)
|
|
self.user = None
|
|
|
|
def validate(self):
|
|
"""Validate the form."""
|
|
initial_validation = super(LoginForm, self).validate()
|
|
if not initial_validation:
|
|
return False
|
|
|
|
self.user = User.query.filter_by(username=self.username.data).first()
|
|
if not self.user:
|
|
self.username.errors.append("Unknown username")
|
|
return False
|
|
|
|
if not self.user.check_password(self.password.data):
|
|
self.password.errors.append("Invalid password")
|
|
return False
|
|
|
|
if not self.user.active:
|
|
self.username.errors.append("User not activated")
|
|
return False
|
|
return True
|
|
|