add config auth location
This commit is contained in:
parent
3ec67f9f47
commit
2b317f60c8
|
@ -10,6 +10,7 @@
|
|||
max-height: 240px;
|
||||
overflow-y: auto;
|
||||
white-space: pre-wrap;
|
||||
min-width: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -249,6 +249,30 @@ export function PluginPage() {
|
|||
<option value="custom">{Locale.Plugin.Auth.Custom}</option>
|
||||
</select>
|
||||
</ListItem>
|
||||
{["bearer", "basic", "custom"].includes(
|
||||
editingPlugin.authType as string,
|
||||
) && (
|
||||
<ListItem title={Locale.Plugin.Auth.Location}>
|
||||
<select
|
||||
value={editingPlugin?.authLocation}
|
||||
onChange={(e) => {
|
||||
pluginStore.updatePlugin(editingPlugin.id, (plugin) => {
|
||||
plugin.authLocation = e.target.value;
|
||||
});
|
||||
}}
|
||||
>
|
||||
<option value="header">
|
||||
{Locale.Plugin.Auth.LocationHeader}
|
||||
</option>
|
||||
<option value="query">
|
||||
{Locale.Plugin.Auth.LocationQuery}
|
||||
</option>
|
||||
<option value="body">
|
||||
{Locale.Plugin.Auth.LocationBody}
|
||||
</option>
|
||||
</select>
|
||||
</ListItem>
|
||||
)}
|
||||
{editingPlugin.authType == "custom" && (
|
||||
<ListItem title={Locale.Plugin.Auth.CustomHeader}>
|
||||
<input
|
||||
|
|
|
@ -551,10 +551,14 @@ const cn = {
|
|||
Basic: "Basic",
|
||||
Bearer: "Bearer",
|
||||
Custom: "自定义",
|
||||
CustomHeader: "自定义头",
|
||||
CustomHeader: "自定义参数名称",
|
||||
Token: "Token",
|
||||
Proxy: "使用代理",
|
||||
ProxyDescription: "使用代理解决 CORS 错误",
|
||||
Location: "位置",
|
||||
LocationHeader: "Header",
|
||||
LocationQuery: "Query",
|
||||
LocationBody: "Body",
|
||||
},
|
||||
EditModal: {
|
||||
Title: (readonly: boolean) => `编辑插件 ${readonly ? "(只读)" : ""}`,
|
||||
|
|
|
@ -559,10 +559,14 @@ const en: LocaleType = {
|
|||
Basic: "Basic",
|
||||
Bearer: "Bearer",
|
||||
Custom: "Custom",
|
||||
CustomHeader: "Custom Header",
|
||||
CustomHeader: "Parameter Name",
|
||||
Token: "Token",
|
||||
Proxy: "Using Proxy",
|
||||
ProxyDescription: "Using proxies to solve CORS error",
|
||||
Location: "Location",
|
||||
LocationHeader: "Header",
|
||||
LocationQuery: "Query",
|
||||
LocationBody: "Body",
|
||||
},
|
||||
EditModal: {
|
||||
Title: (readonly: boolean) =>
|
||||
|
|
|
@ -13,6 +13,7 @@ export type Plugin = {
|
|||
content: string;
|
||||
builtin: boolean;
|
||||
authType?: string;
|
||||
authLocation?: string;
|
||||
authHeader?: string;
|
||||
authToken?: string;
|
||||
usingProxy?: boolean;
|
||||
|
@ -50,16 +51,17 @@ export const FunctionToolService = {
|
|||
const definition = yaml.load(plugin.content) as any;
|
||||
const serverURL = definition?.servers?.[0]?.url;
|
||||
const baseURL = !!plugin?.usingProxy ? "/api/proxy" : serverURL;
|
||||
const headers: Record<string, string | undefined> = {
|
||||
"X-Base-URL": !!plugin?.usingProxy ? serverURL : undefined,
|
||||
};
|
||||
if (plugin?.authLocation == "header") {
|
||||
headers[headerName] = tokenValue;
|
||||
}
|
||||
const api = new OpenAPIClientAxios({
|
||||
definition: yaml.load(plugin.content) as any,
|
||||
axiosConfigDefaults: {
|
||||
baseURL,
|
||||
headers: {
|
||||
// 'Cache-Control': 'no-cache',
|
||||
// 'Content-Type': 'application/json', // TODO
|
||||
[headerName]: tokenValue,
|
||||
"X-Base-URL": !!plugin?.usingProxy ? serverURL : undefined,
|
||||
},
|
||||
headers,
|
||||
},
|
||||
});
|
||||
try {
|
||||
|
@ -111,20 +113,26 @@ export const FunctionToolService = {
|
|||
funcs: operations.reduce((s, o) => {
|
||||
// @ts-ignore
|
||||
s[o.operationId] = function (args) {
|
||||
const argument = [];
|
||||
const parameters: Record<string, any> = {};
|
||||
if (o.parameters instanceof Array) {
|
||||
o.parameters.forEach((p) => {
|
||||
// @ts-ignore
|
||||
argument.push(args[p?.name]);
|
||||
parameters[p?.name] = args[p?.name];
|
||||
// @ts-ignore
|
||||
delete args[p?.name];
|
||||
});
|
||||
} else {
|
||||
argument.push(null);
|
||||
}
|
||||
argument.push(args);
|
||||
if (plugin?.authLocation == "query") {
|
||||
parameters[headerName] = tokenValue;
|
||||
} else if (plugin?.authLocation == "body") {
|
||||
args[headerName] = tokenValue;
|
||||
}
|
||||
// @ts-ignore
|
||||
return api.client[o.operationId].apply(null, argument);
|
||||
return api.client[o.operationId](
|
||||
parameters,
|
||||
args,
|
||||
api.axiosConfigDefaults,
|
||||
);
|
||||
};
|
||||
return s;
|
||||
}, {}),
|
||||
|
|
Loading…
Reference in New Issue