From 32379687abedb85f6d9c33c7b3253955d7a07887 Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Thu, 9 Jul 2026 09:26:13 +0300 Subject: [PATCH] fix: dependencies --- lnbits/core/wasm_ext/api/host.py | 2 +- lnbits/core/wasm_ext/api/utils.py | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lnbits/core/wasm_ext/api/host.py b/lnbits/core/wasm_ext/api/host.py index 2c9d6a4e0..f672ab650 100644 --- a/lnbits/core/wasm_ext/api/host.py +++ b/lnbits/core/wasm_ext/api/host.py @@ -69,7 +69,7 @@ class ExtensionHostAPI: self.owner_id = sha256s(user_id) if user_id else owner_id from .utils import ExtensionAPIUtils - self.utils = ExtensionAPIUtils() + self.utils = ExtensionAPIUtils(self.extension_id, self.permissions) @extension_api_method( method_id="storage.get", diff --git a/lnbits/core/wasm_ext/api/utils.py b/lnbits/core/wasm_ext/api/utils.py index 39cf46904..088ada9a9 100644 --- a/lnbits/core/wasm_ext/api/utils.py +++ b/lnbits/core/wasm_ext/api/utils.py @@ -1,6 +1,7 @@ from __future__ import annotations import time +from collections.abc import Iterable from datetime import datetime from typing import Any @@ -42,14 +43,26 @@ from .registry import extension_api_method class ExtensionAPIUtils: - def __init__(self) -> None: - self.currencies = ExtensionCurrencyUtils() - self.server = ExtensionServerUtils() - self.lightning = ExtensionLightningUtils() + def __init__(self, extension_id: str, permissions: Iterable[str]) -> None: + permission_set = set(permissions) + self.currencies = ExtensionCurrencyUtils(extension_id, permission_set) + self.server = ExtensionServerUtils(extension_id, permission_set) + self.lightning = ExtensionLightningUtils(extension_id, permission_set) class _ExtensionAPIUtilsGroup: - pass + def __init__(self, extension_id: str, permissions: Iterable[str]) -> None: + self.extension_id = extension_id + self.permissions = set(permissions) + + def require_permission(self, permission: str | None) -> None: + if permission and permission not in self.permissions: + raise PermissionError( + f"Extension '{self.extension_id}' is missing permission '{permission}'." + ) + + def has_authenticated_context(self) -> bool: + return False class ExtensionCurrencyUtils(_ExtensionAPIUtilsGroup):