feat: .env super_user overwrites DB super_user

This commit is contained in:
Vlad Stan 2022-12-16 11:22:32 +02:00
parent d6757ed2cf
commit d596992993
2 changed files with 20 additions and 12 deletions

View file

@ -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()

View file

@ -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:")