mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-24 22:58:46 +01:00
a big refactor that: - fixes some issues that might have happened (or not) with asynchronous reactions to payments; - paves the way to https://github.com/lnbits/lnbits/issues/121; - uses more async/await notation which just looks nice; and - makes it simple(r?) for one extension to modify stuff from other extensions.
25 lines
845 B
Python
25 lines
845 B
Python
from base64 import b64decode
|
|
from quart import jsonify, g, request
|
|
from functools import wraps
|
|
|
|
from lnbits.core.crud import get_wallet_for_key
|
|
|
|
|
|
def check_wallet(requires_admin=False):
|
|
def wrap(view):
|
|
@wraps(view)
|
|
async def wrapped_view(**kwargs):
|
|
token = request.headers["Authorization"].split("Bearer ")[1]
|
|
key_type, key = b64decode(token).decode("utf-8").split(":")
|
|
|
|
if requires_admin and key_type != "admin":
|
|
return jsonify({"error": True, "code": 2, "message": "insufficient permissions"})
|
|
|
|
g.wallet = await get_wallet_for_key(key, key_type)
|
|
if not g.wallet:
|
|
return jsonify({"error": True, "code": 2, "message": "insufficient permissions"})
|
|
return await view(**kwargs)
|
|
|
|
return wrapped_view
|
|
|
|
return wrap
|