feat: dont reset superuser on delete settings endpoint (#3065)

Co-authored-by: dni  <office@dnilabs.com>
This commit is contained in:
Arc 2025-05-13 10:52:59 +01:00 committed by GitHub
parent f74fcea35b
commit 7bea591879
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 23 additions and 5 deletions

View file

@ -43,6 +43,7 @@ from .settings import (
delete_admin_settings,
get_admin_settings,
get_super_settings,
reset_core_settings,
update_admin_settings,
update_super_user,
)
@ -129,6 +130,7 @@ __all__ = [
"get_super_settings",
"update_admin_settings",
"update_super_user",
"reset_core_settings",
# tinyurl
"create_tinyurl",
"delete_tinyurl",

View file

@ -61,7 +61,23 @@ async def update_super_user(super_user: str) -> SuperSettings:
async def delete_admin_settings(tag: Optional[str] = "core") -> None:
await db.execute("DELETE FROM settings WHERE tag = :tag", {"tag": tag})
await db.execute(
"DELETE FROM system_settings WHERE tag = :tag",
{"tag": tag},
)
async def reset_core_settings() -> None:
await db.execute(
"""
DELETE FROM system_settings WHERE tag = 'core'
AND id NOT IN (
'super_user',
'lnbits_webpush_pubkey',
'lnbits_webpush_privkey'
)
""",
)
async def create_admin_settings(super_user: str, new_settings: dict) -> SuperSettings:

View file

@ -29,7 +29,7 @@ from lnbits.settings import AdminSettings, Settings, UpdateSettings, settings
from lnbits.tasks import invoice_listeners
from .. import core_app_extra
from ..crud import delete_admin_settings, get_admin_settings, update_admin_settings
from ..crud import get_admin_settings, reset_core_settings, update_admin_settings
admin_router = APIRouter(tags=["Admin UI"], prefix="/admin")
file_upload = File(...)
@ -113,7 +113,7 @@ async def api_reset_settings(field_name: str):
@admin_router.delete("/api/v1/settings", status_code=HTTPStatus.OK)
async def api_delete_settings(user: User = Depends(check_super_user)) -> None:
enqueue_notification(NotificationType.settings_update, {"username": user.username})
await delete_admin_settings()
await reset_core_settings()
server_restart.set()

View file

@ -546,10 +546,10 @@ window.AdminPageLogic = {
Quasar.Notify.create({
type: 'positive',
message:
'Success! Restored settings to defaults, restart required!',
'Success! Restored settings to defaults. Restarting...',
icon: null
})
this.needsRestart = true
this.$q.localStorage.clear()
})
.catch(LNbits.utils.notifyApiError)
})