# SPDX-FileCopyrightText: 2026 Dennis Fink # # SPDX-License-Identifier: BSD-3-Clause import re from flask_wtf import FlaskForm from wtforms import PasswordField, StringField, SubmitField from wtforms.validators import URL, InputRequired, Regexp from .validators import AllowedHostname, NotEqualTo, PublicURL class LoginForm(FlaskForm): """ Form for authenticating a user. """ username = StringField("Username", validators=[InputRequired()]) password = PasswordField("Password", validators=[InputRequired()]) submit = SubmitField("Sign In") class EndpointForm(FlaskForm): """ Form for receiving a Webmention. The source must be a public HTTP or HTTPS URL distinct from the target. The target must be an HTTP or HTTPS URL using an allowed hostname. """ source = StringField( "source", validators=[ InputRequired(), URL(), Regexp( "^https?://.*", flags=re.IGNORECASE, message="source must begin with http or https", ), NotEqualTo("target"), PublicURL(), ], ) target = StringField( "target", validators=[ InputRequired(), URL(), Regexp( "^https?://.*", flags=re.IGNORECASE, message="target must begin with http or https", ), AllowedHostname(), ], ) class AdminActionForm(FlaskForm): """ Form for confirming an administrative action. """ submit = SubmitField("Confirm")