39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from flask_babel import _, lazy_gettext
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import PasswordField, StringField
|
|
from wtforms.validators import DataRequired
|
|
|
|
from starfall.web.blueprints.base import BaseBlueprint
|
|
from starfall.web.controllers.base import BaseController
|
|
|
|
|
|
class LoginForm(FlaskForm):
|
|
username: StringField = StringField(
|
|
label=lazy_gettext("page.login.form.username"), # pyright: ignore[reportArgumentType]
|
|
render_kw={
|
|
"autocomplete": "username",
|
|
"class": "form-control",
|
|
"placeholder": lazy_gettext("page.login.form.username"),
|
|
},
|
|
validators=[
|
|
DataRequired(message=lazy_gettext("page.login.error.username")), # pyright: ignore[reportArgumentType]
|
|
],
|
|
)
|
|
password: PasswordField = PasswordField(
|
|
label=lazy_gettext("page.login.form.password"), # pyright: ignore[reportArgumentType]
|
|
render_kw={
|
|
"autocomplete": "password",
|
|
"class": "form-control",
|
|
"placeholder": lazy_gettext("page.login.form.password"),
|
|
},
|
|
validators=[
|
|
DataRequired(message=lazy_gettext("page.login.error.password")), # pyright: ignore[reportArgumentType]
|
|
],
|
|
)
|
|
|
|
|
|
class LoginController(BaseController):
|
|
@classmethod
|
|
def apply(cls, bp: BaseBlueprint):
|
|
bp.data["form"] = LoginForm()
|