lnbits-legend/lnbits/extensions/lndhub/decorators.py

30 lines
921 B
Python
Raw Normal View History

2020-08-31 16:18:05 -03:00
from base64 import b64decode
from quart import jsonify, g, request
2020-08-31 16:18:05 -03:00
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):
2020-08-31 16:18:05 -03:00
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"}
)
2020-08-31 16:18:05 -03:00
g.wallet = await get_wallet_for_key(key, key_type)
2020-08-31 16:18:05 -03:00
if not g.wallet:
return jsonify(
{"error": True, "code": 2, "message": "insufficient permissions"}
)
return await view(**kwargs)
2020-08-31 16:18:05 -03:00
return wrapped_view
return wrap