mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
|
|
const { EnvVar } = require('@librechat/agents');
|
||
|
|
const { Tools, AuthType } = require('librechat-data-provider');
|
||
|
|
const { loadAuthValues } = require('~/app/clients/tools/util');
|
||
|
|
|
||
|
|
const fieldsMap = {
|
||
|
|
[Tools.execute_code]: [EnvVar.CODE_API_KEY],
|
||
|
|
};
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param {ServerRequest} req - The request object, containing information about the HTTP request.
|
||
|
|
* @param {ServerResponse} res - The response object, used to send back the desired HTTP response.
|
||
|
|
* @returns {Promise<void>} A promise that resolves when the function has completed.
|
||
|
|
*/
|
||
|
|
const verifyToolAuth = async (req, res) => {
|
||
|
|
try {
|
||
|
|
const { toolId } = req.params;
|
||
|
|
const authFields = fieldsMap[toolId];
|
||
|
|
if (!authFields) {
|
||
|
|
res.status(404).json({ message: 'Tool not found' });
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
let result;
|
||
|
|
try {
|
||
|
|
result = await loadAuthValues({
|
||
|
|
userId: req.user.id,
|
||
|
|
authFields,
|
||
|
|
});
|
||
|
|
} catch (error) {
|
||
|
|
res.status(200).json({ authenticated: false, message: AuthType.USER_PROVIDED });
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
let isUserProvided = false;
|
||
|
|
for (const field of authFields) {
|
||
|
|
if (!result[field]) {
|
||
|
|
res.status(200).json({ authenticated: false, message: AuthType.USER_PROVIDED });
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!isUserProvided && process.env[field] !== result[field]) {
|
||
|
|
isUserProvided = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
res.status(200).json({
|
||
|
|
authenticated: true,
|
||
|
|
message: isUserProvided ? AuthType.USER_PROVIDED : AuthType.SYSTEM_DEFINED,
|
||
|
|
});
|
||
|
|
} catch (error) {
|
||
|
|
res.status(500).json({ message: error.message });
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
module.exports = {
|
||
|
|
verifyToolAuth,
|
||
|
|
};
|