Files
wizarr/app/forms/ldap.py

92 lines
2.8 KiB
Python

from flask_wtf import FlaskForm
from wtforms import BooleanField, PasswordField, SelectField, StringField
from wtforms.validators import DataRequired, Optional
class LDAPSettingsForm(FlaskForm):
"""Form for LDAP configuration settings."""
# Connection settings
enabled = BooleanField("Enable LDAP", default=False, validators=[Optional()])
server_url = StringField(
"LDAP Server URL",
validators=[DataRequired()],
render_kw={"placeholder": "ldap://ldap.example.com:389"},
)
use_tls = BooleanField("Use TLS", default=True, validators=[Optional()])
verify_cert = BooleanField(
"Verify Certificate", default=True, validators=[Optional()]
)
# Service account
service_account_dn = StringField(
"Service Account DN",
validators=[Optional()],
render_kw={"placeholder": "cn=wizarr,ou=people,dc=example,dc=com"},
)
service_account_password = PasswordField(
"Service Account Password", validators=[Optional()]
)
# User settings
user_base_dn = StringField(
"User Base DN",
validators=[DataRequired()],
render_kw={"placeholder": "ou=people,dc=example,dc=com"},
)
user_search_filter = StringField(
"User Search Filter",
validators=[DataRequired()],
default="(uid={username})",
render_kw={"placeholder": "(uid={username})"},
)
username_attribute = StringField(
"Username Attribute",
validators=[DataRequired()],
default="uid",
render_kw={"placeholder": "uid"},
)
email_attribute = StringField(
"Email Attribute",
validators=[DataRequired()],
default="mail",
render_kw={"placeholder": "mail"},
)
user_object_class = StringField(
"User Object Class",
validators=[DataRequired()],
default="inetOrgPerson",
render_kw={"placeholder": "inetOrgPerson"},
)
# Group settings
group_base_dn = StringField(
"Group Base DN",
validators=[Optional()],
render_kw={"placeholder": "ou=groups,dc=example,dc=com"},
)
group_object_class = StringField(
"Group Object Class",
validators=[Optional()],
default="groupOfUniqueNames",
render_kw={"placeholder": "groupOfUniqueNames"},
)
group_member_attribute = StringField(
"Group Member Attribute",
validators=[Optional()],
default="uniqueMember",
render_kw={"placeholder": "uniqueMember"},
)
# Admin authentication
allow_admin_bind = BooleanField(
"Allow Admin Login via LDAP", default=False, validators=[Optional()]
)
admin_group_dn = SelectField(
"Admin Group DN",
choices=[],
validators=[Optional()],
coerce=lambda x: x or None,
)