fix landing page
This commit is contained in:
56
utils/helpers.py
Normal file
56
utils/helpers.py
Normal 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
|
||||
Reference in New Issue
Block a user