44from dify_plugin import Endpoint
55from werkzeug import Request , Response
66
7- from endpoints .helpers .endpoint import OidcApiProxyErrorResponse , proxy_response
7+ from endpoints .helpers .endpoint import OidcApiProxyErrorResponse , proxy_response , replace_user_params
88from endpoints .helpers .oidc import OpenIDConnectDiscoveryProvider
99
1010
@@ -16,6 +16,7 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
1616 oidc_scope = str (settings .get ("oidc_scope" , "" ))
1717 dify_api_url = str (settings .get ("dify_api_url" , "" ))
1818 dify_api_key = str (settings .get ("dify_api_key" , "" ))
19+ dify_replace_user_param_claim = str (settings .get ("dify_replace_user_param_claim" , "" ))
1920
2021 # prepare dify api url by removing trailing slash
2122 if dify_api_url .endswith ("/" ):
@@ -43,7 +44,7 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
4344 # Verify access token
4445 try :
4546 oidc_provider = OpenIDConnectDiscoveryProvider (self .session , oidc_issuer , oidc_audience , oidc_scope )
46- _ = oidc_provider .verify_access_token (access_token )
47+ oidc_claims = oidc_provider .verify_access_token (access_token )
4748 except Exception as e :
4849 return OidcApiProxyErrorResponse (str (e ), 401 )
4950
@@ -61,8 +62,14 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
6162 ** ({"Content-Type" : r .headers ["Content-Type" ]} if r .headers .get ("Content-Type" ) else {}),
6263 }
6364
64- # prepare json if request is json
65+ # prepare params, json and data
66+ params = r .args
6567 json = r .get_json () if r .is_json else None
68+ data = r .form
69+
70+ # replace user params
71+ user = str (oidc_claims .get (dify_replace_user_param_claim , "" ))
72+ params , json , data = replace_user_params (user , params , json , data )
6673
6774 # prepare files if request has files
6875 files = [
@@ -72,7 +79,7 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
7279 # Forward request to Dify API with Syncronous HTTP Client
7380 try :
7481 return proxy_response (
75- request = r , method = r .method , url = url , headers = headers , params = r . args , json = json , data = r . form , files = files
82+ request = r , method = r .method , url = url , headers = headers , params = params , json = json , data = data , files = files
7683 )
7784 except Exception as e :
7885 print (str (e ))
0 commit comments