fix(endpoints.py): encrypt credentials before storing in db

This commit is contained in:
Krrish Dholakia 2025-03-10 18:37:59 -07:00
parent a962a97fcb
commit 507640bc8f

View file

@ -12,12 +12,22 @@ import litellm
from litellm._logging import verbose_proxy_logger
from litellm.proxy._types import CommonProxyErrors, UserAPIKeyAuth
from litellm.proxy.auth.user_api_key_auth import user_api_key_auth
from litellm.proxy.common_utils.encrypt_decrypt_utils import encrypt_value_helper
from litellm.proxy.utils import handle_exception_on_proxy, jsonify_object
from litellm.types.utils import CredentialItem
router = APIRouter()
def encrypt_credential_values(credential: CredentialItem) -> CredentialItem:
"""Encrypt values in credential.credential_values and add to DB"""
encrypted_credential_values = {}
for key, value in credential.credential_values.items():
encrypted_credential_values[key] = encrypt_value_helper(value)
credential.credential_values = encrypted_credential_values
return credential
@router.post(
"/v1/credentials",
dependencies=[Depends(user_api_key_auth)],
@ -42,6 +52,7 @@ async def create_credential(
detail={"error": CommonProxyErrors.db_not_connected_error.value},
)
credential = encrypt_credential_values(credential)
credentials_dict = credential.model_dump()
credentials_dict_jsonified = jsonify_object(credentials_dict)
await prisma_client.db.litellm_credentialstable.create(