e115934061
Publish `@librechat/data-schemas` to NPM / pack (push) Failing after 8s
Publish `@librechat/client` to NPM / pack (push) Failing after 0s
GitNexus Index / index (push) Failing after 1s
Sync Locize Translations & Create Translation PR / Create Translation PR on Version Published (push) Has been skipped
Sync Helm Chart Tags / Sync chart tags (push) Failing after 2s
Publish `librechat-data-provider` to NPM / pack (push) Failing after 1s
Docker Dev Images Build / build (Dockerfile, librechat-dev, node) (push) Failing after 1s
Docker Dev Images Build / build (Dockerfile.multi, librechat-dev-api, api-build) (push) Failing after 0s
Sync Helm Chart Tags / Ignore non-main push (push) Has been skipped
Sync Locize Translations & Create Translation PR / Sync Translation Keys with Locize (push) Failing after 1s
Publish `@librechat/client` to NPM / publish-npm (push) Has been cancelled
Publish `librechat-data-provider` to NPM / publish-npm (push) Has been cancelled
GitNexus Index / post-index (push) Has been cancelled
Publish `@librechat/data-schemas` to NPM / publish-npm (push) Has been cancelled
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
const { AuthType } = require('librechat-data-provider');
|
|
const { getUserPluginAuthValue } = require('~/server/services/PluginService');
|
|
|
|
/**
|
|
*
|
|
* @param {Object} params
|
|
* @param {string} params.userId
|
|
* @param {string[]} params.authFields
|
|
* @param {Set<string>} [params.optional]
|
|
* @param {boolean} [params.throwError]
|
|
* @returns
|
|
*/
|
|
const loadAuthValues = async ({ userId, authFields, optional, throwError = true }) => {
|
|
let authValues = {};
|
|
|
|
/**
|
|
* Finds the first non-empty value for the given authentication field, supporting alternate fields.
|
|
* @param {string[]} fields Array of strings representing the authentication fields. Supports alternate fields delimited by "||".
|
|
* @returns {Promise<{ authField: string, authValue: string} | null>} An object containing the authentication field and value, or null if not found.
|
|
*/
|
|
const findAuthValue = async (fields) => {
|
|
for (const field of fields) {
|
|
const envValue = process.env[field];
|
|
if (envValue && envValue.trim() !== '' && envValue !== AuthType.USER_PROVIDED) {
|
|
return { authField: field, authValue: envValue };
|
|
}
|
|
let value;
|
|
try {
|
|
value = await getUserPluginAuthValue(userId, field, throwError);
|
|
} catch (err) {
|
|
if (optional && optional.has(field)) {
|
|
return { authField: field, authValue: undefined };
|
|
}
|
|
if (field === fields[fields.length - 1]) {
|
|
throw err;
|
|
}
|
|
}
|
|
if (value) {
|
|
return { authField: field, authValue: value };
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
for (let authField of authFields) {
|
|
const fields = authField.split('||');
|
|
const result = await findAuthValue(fields);
|
|
if (result) {
|
|
authValues[result.authField] = result.authValue;
|
|
}
|
|
}
|
|
|
|
return authValues;
|
|
};
|
|
|
|
module.exports = {
|
|
loadAuthValues,
|
|
};
|