diff --git a/litellm/proxy/_experimental/out/404.html b/litellm/proxy/_experimental/out/404.html
deleted file mode 100644
index 12a00c7ffb..0000000000
--- a/litellm/proxy/_experimental/out/404.html
+++ /dev/null
@@ -1 +0,0 @@
-
404: This page could not be found.LiteLLM Dashboard404
This page could not be found.
\ No newline at end of file
diff --git a/litellm/proxy/_experimental/out/model_hub.html b/litellm/proxy/_experimental/out/model_hub.html
deleted file mode 100644
index ce187ad653..0000000000
--- a/litellm/proxy/_experimental/out/model_hub.html
+++ /dev/null
@@ -1 +0,0 @@
-LiteLLM Dashboard
\ No newline at end of file
diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html
deleted file mode 100644
index 38b17e2322..0000000000
--- a/litellm/proxy/_experimental/out/onboarding.html
+++ /dev/null
@@ -1 +0,0 @@
-LiteLLM Dashboard
\ No newline at end of file
diff --git a/litellm/proxy/auth/auth_checks.py b/litellm/proxy/auth/auth_checks.py
index ba4c299e9c..2d306ceb31 100644
--- a/litellm/proxy/auth/auth_checks.py
+++ b/litellm/proxy/auth/auth_checks.py
@@ -396,6 +396,7 @@ async def get_team_object(
user_api_key_cache: DualCache,
parent_otel_span: Optional[Span] = None,
proxy_logging_obj: Optional[ProxyLogging] = None,
+ check_cache_only: Optional[bool] = None,
) -> LiteLLM_TeamTableCachedObj:
"""
- Check if team id in proxy Team Table
@@ -431,6 +432,12 @@ async def get_team_object(
return LiteLLM_TeamTableCachedObj(**cached_team_obj)
elif isinstance(cached_team_obj, LiteLLM_TeamTableCachedObj):
return cached_team_obj
+
+ if check_cache_only:
+ raise Exception(
+ f"Team doesn't exist in cache + check_cache_only=True. Team={team_id}. Create team via `/team/new` call."
+ )
+
# else, check db
try:
response = await prisma_client.db.litellm_teamtable.find_unique(
diff --git a/litellm/proxy/auth/user_api_key_auth.py b/litellm/proxy/auth/user_api_key_auth.py
index 854ccc48f1..8f78857d59 100644
--- a/litellm/proxy/auth/user_api_key_auth.py
+++ b/litellm/proxy/auth/user_api_key_auth.py
@@ -463,25 +463,29 @@ async def user_api_key_auth(
and valid_token.team_id is not None
):
## UPDATE TEAM VALUES BASED ON CACHED TEAM OBJECT - allows `/team/update` values to work for cached token
- team_obj: LiteLLM_TeamTableCachedObj = await get_team_object(
- team_id=valid_token.team_id,
- prisma_client=prisma_client,
- user_api_key_cache=user_api_key_cache,
- parent_otel_span=parent_otel_span,
- proxy_logging_obj=proxy_logging_obj,
- )
+ try:
+ team_obj: LiteLLM_TeamTableCachedObj = await get_team_object(
+ team_id=valid_token.team_id,
+ prisma_client=prisma_client,
+ user_api_key_cache=user_api_key_cache,
+ parent_otel_span=parent_otel_span,
+ proxy_logging_obj=proxy_logging_obj,
+ check_cache_only=True,
+ )
- if (
- team_obj.last_refreshed_at is not None
- and valid_token.last_refreshed_at is not None
- and team_obj.last_refreshed_at > valid_token.last_refreshed_at
- ):
- team_obj_dict = team_obj.__dict__
+ if (
+ team_obj.last_refreshed_at is not None
+ and valid_token.last_refreshed_at is not None
+ and team_obj.last_refreshed_at > valid_token.last_refreshed_at
+ ):
+ team_obj_dict = team_obj.__dict__
- for k, v in team_obj_dict.items():
- field_name = f"team_{k}"
- if field_name in valid_token.__fields__:
- setattr(valid_token, field_name, v)
+ for k, v in team_obj_dict.items():
+ field_name = f"team_{k}"
+ if field_name in valid_token.__fields__:
+ setattr(valid_token, field_name, v)
+ except Exception as e:
+ verbose_logger.warning(e)
try:
is_master_key_valid = secrets.compare_digest(api_key, master_key) # type: ignore
diff --git a/litellm/tests/test_user_api_key_auth.py b/litellm/tests/test_user_api_key_auth.py
index 5a8402bdcc..6ad0a62e79 100644
--- a/litellm/tests/test_user_api_key_auth.py
+++ b/litellm/tests/test_user_api_key_auth.py
@@ -61,7 +61,11 @@ async def test_check_blocked_team():
from fastapi import Request
from starlette.datastructures import URL
- from litellm.proxy._types import LiteLLM_TeamTable, UserAPIKeyAuth
+ from litellm.proxy._types import (
+ LiteLLM_TeamTable,
+ LiteLLM_TeamTableCachedObj,
+ UserAPIKeyAuth,
+ )
from litellm.proxy.auth.user_api_key_auth import user_api_key_auth
from litellm.proxy.proxy_server import hash_token, user_api_key_cache
@@ -75,7 +79,7 @@ async def test_check_blocked_team():
last_refreshed_at=time.time(),
)
await asyncio.sleep(1)
- team_obj = LiteLLM_TeamTable(
+ team_obj = LiteLLM_TeamTableCachedObj(
team_id=_team_id, blocked=False, last_refreshed_at=time.time()
)
user_api_key_cache.set_cache(key=hash_token(user_key), value=valid_token)