2727
2828@router .post ("" )
2929async def create_provider (
30- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"write" }))],
30+ user : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"write" }))],
3131 request : CreateProviderRequest ,
3232 provider_service : ProviderServiceDependency ,
3333 configuration : ConfigurationDependency ,
@@ -36,6 +36,7 @@ async def create_provider(
3636 if auto_remove and not configuration .provider .auto_remove_enabled :
3737 raise HTTPException (status_code = status .HTTP_400_BAD_REQUEST , detail = "Auto remove functionality is disabled" )
3838 return await provider_service .create_provider (
39+ user = user .user ,
3940 location = request .location ,
4041 agent_card = request .agent_card ,
4142 auto_remove = auto_remove ,
@@ -47,7 +48,7 @@ async def create_provider(
4748async def preview_provider (
4849 request : CreateProviderRequest ,
4950 provider_service : ProviderServiceDependency ,
50- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions ())],
51+ _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = { "write" } ))],
5152) -> ProviderWithState :
5253 return await provider_service .preview_provider (location = request .location , agent_card = request .agent_card )
5354
@@ -56,10 +57,11 @@ async def preview_provider(
5657async def list_providers (
5758 provider_service : ProviderServiceDependency ,
5859 request : Request ,
59- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"read" }), use_cache = False )],
60+ user : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"read" }), use_cache = False )],
61+ user_owned : Annotated [bool , Query ()] = False ,
6062) -> PaginatedResult [ProviderWithState ]:
6163 providers = []
62- for provider in await provider_service .list_providers ():
64+ for provider in await provider_service .list_providers (user = user . user if user_owned else None ):
6365 new_provider = provider .model_copy (
6466 update = {
6567 "agent_card" : create_proxy_agent_card (provider .agent_card , provider_id = provider .id , request = request )
@@ -87,18 +89,20 @@ async def get_provider(
8789async def delete_provider (
8890 id : UUID ,
8991 provider_service : ProviderServiceDependency ,
90- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"write" }))],
92+ user : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"write" }))],
9193) -> None :
92- await provider_service .delete_provider (provider_id = id )
94+ # admin can delete any provider, other users only their providers
95+ await provider_service .delete_provider (provider_id = id , user = user .user )
9396
9497
9598@router .get ("/{id}/logs" )
9699async def stream_logs (
97- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"write" }))],
100+ user : Annotated [AuthorizedUser , Depends (RequiresPermissions (providers = {"write" }))],
98101 id : UUID ,
99102 provider_service : ProviderServiceDependency ,
100103) -> StreamingResponse :
101- logs_iterator = await provider_service .stream_logs (provider_id = id )
104+ # admin can see logs from all providers, other users only logs of their provider
105+ logs_iterator = await provider_service .stream_logs (provider_id = id , user = user .user )
102106 return streaming_response (logs_iterator ())
103107
104108
@@ -107,15 +111,17 @@ async def update_provider_variables(
107111 id : UUID ,
108112 request : UpdateVariablesRequest ,
109113 provider_service : ProviderServiceDependency ,
110- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (provider_variables = {"write" }))],
114+ user : Annotated [AuthorizedUser , Depends (RequiresPermissions (provider_variables = {"write" }))],
111115) -> None :
112- await provider_service .update_provider_env (provider_id = id , env = request .variables )
116+ # admin can update all variables, other users only variables of their provider
117+ await provider_service .update_provider_env (provider_id = id , env = request .variables , user = user .user )
113118
114119
115120@router .get ("/{id}/variables" )
116121async def list_provider_variables (
117122 id : UUID ,
118123 provider_service : ProviderServiceDependency ,
119- _ : Annotated [AuthorizedUser , Depends (RequiresPermissions (provider_variables = {"read" }))],
124+ user : Annotated [AuthorizedUser , Depends (RequiresPermissions (provider_variables = {"read" }))],
120125) -> ListVariablesSchema :
121- return ListVariablesSchema (variables = await provider_service .list_provider_env (provider_id = id ))
126+ # admin can see all variables, other users only variables of their provider
127+ return ListVariablesSchema (variables = await provider_service .list_provider_env (provider_id = id , user = user .user ))
0 commit comments