- from core.helper.provider_cache import SingletonProviderCredentialsCache
- from core.plugin.entities.request import RequestInvokeEncrypt
- from core.tools.utils.encryption import create_provider_encrypter
- from models.account import Tenant
-
-
- class PluginEncrypter:
- @classmethod
- def invoke_encrypt(cls, tenant: Tenant, payload: RequestInvokeEncrypt) -> dict:
- encrypter, cache = create_provider_encrypter(
- tenant_id=tenant.id,
- config=payload.config,
- cache=SingletonProviderCredentialsCache(
- tenant_id=tenant.id,
- provider_type=payload.namespace,
- provider_identity=payload.identity,
- ),
- )
-
- if payload.opt == "encrypt":
- return {
- "data": encrypter.encrypt(payload.data),
- }
- elif payload.opt == "decrypt":
- return {
- "data": encrypter.decrypt(payload.data),
- }
- elif payload.opt == "clear":
- cache.delete()
- return {
- "data": {},
- }
- else:
- raise ValueError(f"Invalid opt: {payload.opt}")
|