fix landing page

This commit is contained in:
Stefano Manfredi
2025-12-02 23:18:43 +00:00
parent 7168fa4b72
commit ce9e2fdf2a
17 changed files with 727 additions and 457 deletions

56
utils/helpers.py Normal file
View File

@@ -0,0 +1,56 @@
"""
Shared Utility Functions
Common helpers used across the application
"""
import uuid
import re
from typing import TYPE_CHECKING
from app import config
if TYPE_CHECKING:
from database.models import User
def generate_uuid() -> str:
"""Generate a new UUID string"""
return str(uuid.uuid4())
def is_ldap_user(user: "User") -> bool:
"""Check if user is managed by LDAP (Authelia mode with no local password)"""
return config.AUTHELIA_ENABLED and user.password_hash is None
def is_ldap_admin(user: "User") -> bool:
"""Check if user is an LDAP-managed admin"""
return is_ldap_user(user) and user.role == "admin"
def validate_password(password: str) -> list[str]:
"""
Validate password strength.
Returns list of error messages (empty if valid).
"""
errors = []
if len(password) < 8:
errors.append("at least 8 characters")
if not re.search(r'[A-Z]', password):
errors.append("one uppercase letter")
if not re.search(r'[a-z]', password):
errors.append("one lowercase letter")
if not re.search(r'[0-9]', password):
errors.append("one number")
return errors
def format_password_errors(errors: list[str]) -> str:
"""Format password validation errors into a message"""
if not errors:
return ""
return f"Password must contain: {', '.join(errors)}"
def get_notification_default(value, default):
"""Get notification setting value with default fallback"""
return value if value is not None else default