From d596992993dd38cd3b7cc0a7e11ee247bb242733 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Fri, 16 Dec 2022 11:22:32 +0200 Subject: [PATCH] feat: `.env` `super_user` overwrites DB `super_user` --- lnbits/core/crud.py | 11 +++++++++-- lnbits/core/services.py | 21 +++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lnbits/core/crud.py b/lnbits/core/crud.py index ded7665c2..2f3823740 100644 --- a/lnbits/core/crud.py +++ b/lnbits/core/crud.py @@ -4,8 +4,6 @@ from typing import Any, Dict, List, Optional from urllib.parse import urlparse from uuid import uuid4 -from loguru import logger - from lnbits import bolt11 from lnbits.db import COCKROACH, POSTGRES, Connection from lnbits.settings import AdminSettings, EditableSetings, SuperSettings, settings @@ -585,6 +583,14 @@ async def update_admin_settings(data: EditableSetings): await db.execute(f"UPDATE settings SET editable_settings = ?", (json.dumps(data),)) +async def update_super_user(super_user: str): + await db.execute( + "UPDATE settings SET super_user = ?", + (super_user), + ) + return await get_super_settings() + + async def init_admin_settings(super_user: str = None): user = None if super_user: @@ -597,3 +603,4 @@ async def init_admin_settings(super_user: str = None): sql = f"INSERT INTO settings (super_user, editable_settings) VALUES (?, ?)" await db.execute(sql, (super_user, json.dumps(editable_settings.dict()))) + return await get_super_settings() diff --git a/lnbits/core/services.py b/lnbits/core/services.py index ed898e730..6faa23cab 100644 --- a/lnbits/core/services.py +++ b/lnbits/core/services.py @@ -41,6 +41,7 @@ from .crud import ( init_admin_settings, update_payment_details, update_payment_status, + update_super_user, ) from .models import Payment @@ -415,18 +416,18 @@ async def update_wallet_balance(wallet_id: str, amount: int): async def check_admin_settings(): if settings.lnbits_admin_ui: - sets = await get_super_settings() - if not sets: + settings_db = await get_super_settings() + if not settings_db: # create new settings if table is empty - logger.warning( - "settings empty. inserting new settings and creating admin account" - ) - await init_admin_settings(settings.super_user) - logger.warning("initialized settings from enviroment variables.") - sets = await get_super_settings() + logger.warning("Settings DB empty. Inserting default settings.") + settings_db = await init_admin_settings(settings.super_user) + logger.warning("Initialized settings from enviroment variables.") - if sets: - update_cached_settings(sets.dict()) + if settings.super_user and settings.super_user != settings_db.super_user: + # .env super_user overwrites DB super_user + settings_db = await update_super_user(settings.super_user) + + update_cached_settings(settings_db.dict()) # printing settings for debugging logger.debug(f"Admin settings:")