feat: customize site banners and login notices
This commit is contained in:
@@ -20,7 +20,7 @@ from ..auth import (
|
||||
normalize_user_auth_provider,
|
||||
resolve_user_auth_provider,
|
||||
)
|
||||
from ..config import settings as env_settings
|
||||
from ..config import normalize_banner_color, settings as env_settings
|
||||
from ..network_security import validate_notification_target_url
|
||||
from ..db import (
|
||||
delete_setting,
|
||||
@@ -174,6 +174,11 @@ NOTIFICATION_URL_SETTING_KEYS = {
|
||||
"magent_notify_webhook_url",
|
||||
}
|
||||
|
||||
BANNER_COLOR_SETTING_KEYS = {
|
||||
"site_banner_background_color",
|
||||
"site_banner_border_color",
|
||||
}
|
||||
|
||||
SETTING_KEYS: List[str] = [
|
||||
"jellystat_base_url",
|
||||
"jellystat_api_key",
|
||||
@@ -260,6 +265,9 @@ SETTING_KEYS: List[str] = [
|
||||
"site_banner_enabled",
|
||||
"site_banner_message",
|
||||
"site_banner_tone",
|
||||
"site_banner_background_color",
|
||||
"site_banner_border_color",
|
||||
"site_login_message",
|
||||
"site_login_show_jellyfin_login",
|
||||
"site_login_show_local_login",
|
||||
"site_login_show_forgot_password",
|
||||
@@ -712,6 +720,11 @@ async def update_settings(payload: Dict[str, Any]) -> Dict[str, Any]:
|
||||
value_to_store = value_to_store.lower()
|
||||
if value_to_store not in {"days", "weeks", "months"}:
|
||||
raise HTTPException(status_code=400, detail="Confirmation interval unit must be days, weeks, or months")
|
||||
if key in BANNER_COLOR_SETTING_KEYS:
|
||||
normalized_color = normalize_banner_color(value_to_store)
|
||||
if not normalized_color:
|
||||
raise HTTPException(status_code=400, detail=f"{key.replace('_', ' ')} must be a six-digit hex colour such as #ffc857")
|
||||
value_to_store = normalized_color
|
||||
if key in URL_SETTING_KEYS and value_to_store:
|
||||
try:
|
||||
value_to_store = _normalize_service_url(value_to_store)
|
||||
|
||||
Reference in New Issue
Block a user