From 8f9ef133252abc0e34e960f178fc64333a6a2b08 Mon Sep 17 00:00:00 2001 From: Danny Avila <110412045+danny-avila@users.noreply.github.com> Date: Mon, 8 Jan 2024 11:12:51 -0500 Subject: [PATCH] fix(getUserPluginAuthValue): throws error if no user matches (#1522) --- api/server/services/PluginService.js | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/api/server/services/PluginService.js b/api/server/services/PluginService.js index 1eaa6eedab..6158238291 100644 --- a/api/server/services/PluginService.js +++ b/api/server/services/PluginService.js @@ -2,18 +2,38 @@ const PluginAuth = require('~/models/schema/pluginAuthSchema'); const { encrypt, decrypt } = require('~/server/utils/'); const { logger } = require('~/config'); -const getUserPluginAuthValue = async (user, authField) => { +/** + * Asynchronously retrieves and decrypts the authentication value for a user's plugin, based on a specified authentication field. + * + * @param {string} userId - The unique identifier of the user for whom the plugin authentication value is to be retrieved. + * @param {string} authField - The specific authentication field (e.g., 'API_KEY', 'URL') whose value is to be retrieved and decrypted. + * @returns {Promise} A promise that resolves to the decrypted authentication value if found, or `null` if no such authentication value exists for the given user and field. + * + * The function throws an error if it encounters any issue during the retrieval or decryption process, or if the authentication value does not exist. + * + * @example + * // To get the decrypted value of the 'token' field for a user with userId '12345': + * getUserPluginAuthValue('12345', 'token').then(value => { + * console.log(value); + * }).catch(err => { + * console.error(err); + * }); + * + * @throws {Error} Throws an error if there's an issue during the retrieval or decryption process, or if the authentication value does not exist. + * @async + */ +const getUserPluginAuthValue = async (userId, authField) => { try { - const pluginAuth = await PluginAuth.findOne({ user, authField }).lean(); + const pluginAuth = await PluginAuth.findOne({ userId, authField }).lean(); if (!pluginAuth) { - return null; + throw new Error(`No plugin auth ${authField} found for user ${userId}`); } const decryptedValue = decrypt(pluginAuth.value); return decryptedValue; } catch (err) { logger.error('[getUserPluginAuthValue]', err); - return err; + throw err; } };