encrypt.py 994 B

12345678910111213141516171819202122232425262728293031
  1. from core.plugin.entities.request import RequestInvokeEncrypt
  2. from core.tools.utils.configuration import ProviderConfigEncrypter
  3. from models.account import Tenant
  4. class PluginEncrypter:
  5. @classmethod
  6. def invoke_encrypt(cls, tenant: Tenant, payload: RequestInvokeEncrypt) -> dict:
  7. encrypter = ProviderConfigEncrypter(
  8. tenant_id=tenant.id,
  9. config=payload.config,
  10. provider_type=payload.namespace,
  11. provider_identity=payload.identity,
  12. )
  13. if payload.opt == "encrypt":
  14. return {
  15. "data": encrypter.encrypt(payload.data),
  16. }
  17. elif payload.opt == "decrypt":
  18. return {
  19. "data": encrypter.decrypt(payload.data),
  20. }
  21. elif payload.opt == "clear":
  22. encrypter.delete_tool_credentials_cache()
  23. return {
  24. "data": {},
  25. }
  26. else:
  27. raise ValueError(f"Invalid opt: {payload.opt}")