fix: create row on event
This commit is contained in:
@@ -108,7 +108,7 @@ def extension_api_method(
|
||||
) -> Callable[[ExtensionAPI, _RequestModel], Awaitable[_ResponseModel]]:
|
||||
@wraps(function)
|
||||
async def wrapper(self: ExtensionAPI, request: _RequestModel) -> _ResponseModel:
|
||||
if require_auth and not self.user_id:
|
||||
if require_auth and not self.has_authenticated_context():
|
||||
raise PermissionError(
|
||||
f"Extension API method '{method_id}' requires authentication."
|
||||
)
|
||||
@@ -128,20 +128,32 @@ class ExtensionAPI:
|
||||
permissions: Iterable[Any],
|
||||
*,
|
||||
user_id: str | None = None,
|
||||
wallet_id: str | None = None,
|
||||
context: str = "user",
|
||||
) -> None:
|
||||
self.extension_id = extension_id
|
||||
self.permissions, self.permission_policies = self._permission_data(permissions)
|
||||
self.user_id = user_id
|
||||
self.wallet_id = wallet_id
|
||||
self.context = context
|
||||
self._uuid = secrets.token_urlsafe(12).replace("-", "_")
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return (
|
||||
"ExtensionAPI("
|
||||
f"extension_id={self.extension_id!r}, "
|
||||
f"context={self.context!r}, "
|
||||
f"_uuid={self._uuid!r}"
|
||||
")"
|
||||
)
|
||||
|
||||
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 bool(self.user_id) or self.context == "event"
|
||||
|
||||
@extension_api_method(
|
||||
method_id="storage.get",
|
||||
namespace="storage",
|
||||
|
||||
@@ -23,6 +23,7 @@ async def invoke_wasm_extension_export(
|
||||
payload: Mapping[str, Any] | None = None,
|
||||
*,
|
||||
user: Any | None = None,
|
||||
context: str = "user",
|
||||
) -> dict[str, Any]:
|
||||
extension = _get_registered_extension(app, ext_id)
|
||||
permissions = await _extension_permissions(extension)
|
||||
@@ -30,7 +31,9 @@ async def invoke_wasm_extension_export(
|
||||
extension.id,
|
||||
permissions,
|
||||
user_id=_user_id(user),
|
||||
context=context,
|
||||
)
|
||||
print("### api", api)
|
||||
|
||||
return await asyncio.to_thread(
|
||||
_invoke_wasm_extension_export_sync,
|
||||
|
||||
@@ -138,6 +138,7 @@ async def dispatch_wasm_invoice_paid(app: FastAPI, payment: Any) -> None:
|
||||
extension.id,
|
||||
export_name,
|
||||
_wasm_invoice_paid_payload(payment),
|
||||
context="event",
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.warning(
|
||||
|
||||
Reference in New Issue
Block a user