4
4
from dify_plugin import Endpoint
5
5
from werkzeug import Request , Response
6
6
7
- from endpoints .helpers .endpoint import OidcApiProxyErrorResponse , proxy_response
7
+ from endpoints .helpers .endpoint import OidcApiProxyErrorResponse , proxy_response , replace_user_params
8
8
from endpoints .helpers .oidc import OpenIDConnectDiscoveryProvider
9
9
10
10
@@ -16,6 +16,7 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
16
16
oidc_scope = str (settings .get ("oidc_scope" , "" ))
17
17
dify_api_url = str (settings .get ("dify_api_url" , "" ))
18
18
dify_api_key = str (settings .get ("dify_api_key" , "" ))
19
+ dify_replace_user_param_claim = str (settings .get ("dify_replace_user_param_claim" , "" ))
19
20
20
21
# prepare dify api url by removing trailing slash
21
22
if dify_api_url .endswith ("/" ):
@@ -43,7 +44,7 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
43
44
# Verify access token
44
45
try :
45
46
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 )
47
48
except Exception as e :
48
49
return OidcApiProxyErrorResponse (str (e ), 401 )
49
50
@@ -61,8 +62,14 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
61
62
** ({"Content-Type" : r .headers ["Content-Type" ]} if r .headers .get ("Content-Type" ) else {}),
62
63
}
63
64
64
- # prepare json if request is json
65
+ # prepare params, json and data
66
+ params = r .args
65
67
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 )
66
73
67
74
# prepare files if request has files
68
75
files = [
@@ -72,7 +79,7 @@ def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
72
79
# Forward request to Dify API with Syncronous HTTP Client
73
80
try :
74
81
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
76
83
)
77
84
except Exception as e :
78
85
print (str (e ))
0 commit comments