Merge pull request #1178 from lnbits/refactor/depend_admin_user

Refactor: `require_admin_user` decorator
This commit is contained in:
calle 2022-12-26 12:20:25 +01:00 committed by GitHub
commit 9968b1885c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 2 deletions

View File

@ -36,6 +36,7 @@ from lnbits.decorators import (
check_admin, check_admin,
get_key_type, get_key_type,
require_admin_key, require_admin_key,
require_admin_user,
require_invoice_key, require_invoice_key,
) )
from lnbits.helpers import url_for, urlsafe_short_hash from lnbits.helpers import url_for, urlsafe_short_hash
@ -664,7 +665,7 @@ async def img(request: Request, data):
) )
@core_app.get("/api/v1/audit/", dependencies=[Depends(check_admin)]) @core_app.get("/api/v1/audit", dependencies=[Depends(check_admin)])
async def api_auditor(): async def api_auditor():
WALLET = get_wallet_class() WALLET = get_wallet_class()
total_balance = await get_total_balance() total_balance = await get_total_balance()

View File

@ -172,6 +172,23 @@ async def get_key_type(
) )
async def require_admin_user(
r: Request,
api_key_header: str = Security(api_key_header), # type: ignore
api_key_query: str = Security(api_key_query), # type: ignore
):
token = api_key_header or api_key_query
wallet = await get_key_type(r, token)
if wallet.wallet.user not in settings.lnbits_admin_users:
raise HTTPException(
status_code=HTTPStatus.FORBIDDEN, detail="Not an admin user"
)
else:
return wallet
async def require_admin_key( async def require_admin_key(
r: Request, r: Request,
api_key_header: str = Security(api_key_header), # type: ignore api_key_header: str = Security(api_key_header), # type: ignore

View File

@ -11,6 +11,7 @@ from lnbits.decorators import (
check_admin, check_admin,
get_key_type, get_key_type,
require_admin_key, require_admin_key,
require_admin_user,
require_invoice_key, require_invoice_key,
) )
from lnbits.extensions.satspay import satspay_ext from lnbits.extensions.satspay import satspay_ext
@ -148,7 +149,7 @@ async def api_charge_balance(charge_id):
@satspay_ext.post("/api/v1/themes/{css_id}", dependencies=[Depends(check_admin)]) @satspay_ext.post("/api/v1/themes/{css_id}", dependencies=[Depends(check_admin)])
async def api_themes_save( async def api_themes_save(
data: SatsPayThemes, data: SatsPayThemes,
wallet: WalletTypeInfo = Depends(require_invoice_key), wallet: WalletTypeInfo = Depends(require_admin_key),
css_id: str = Query(...), css_id: str = Query(...),
): ):