You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.8 KiB

11 months ago
  1. const ImportedPlugin = require("../../utils/agents/imported");
  2. const { reqBody } = require("../../utils/http");
  3. const {
  4. flexUserRoleValid,
  5. ROLES,
  6. } = require("../../utils/middleware/multiUserProtected");
  7. const { validatedRequest } = require("../../utils/middleware/validatedRequest");
  8. function importedAgentPluginEndpoints(app) {
  9. if (!app) return;
  10. app.post(
  11. "/experimental/agent-plugins/:hubId/toggle",
  12. [validatedRequest, flexUserRoleValid([ROLES.admin])],
  13. (request, response) => {
  14. try {
  15. const { hubId } = request.params;
  16. const { active } = reqBody(request);
  17. const updatedConfig = ImportedPlugin.updateImportedPlugin(hubId, {
  18. active: Boolean(active),
  19. });
  20. response.status(200).json(updatedConfig);
  21. } catch (e) {
  22. console.error(e);
  23. response.status(500).end();
  24. }
  25. }
  26. );
  27. app.post(
  28. "/experimental/agent-plugins/:hubId/config",
  29. [validatedRequest, flexUserRoleValid([ROLES.admin])],
  30. (request, response) => {
  31. try {
  32. const { hubId } = request.params;
  33. const { updates } = reqBody(request);
  34. const updatedConfig = ImportedPlugin.updateImportedPlugin(
  35. hubId,
  36. updates
  37. );
  38. response.status(200).json(updatedConfig);
  39. } catch (e) {
  40. console.error(e);
  41. response.status(500).end();
  42. }
  43. }
  44. );
  45. app.delete(
  46. "/experimental/agent-plugins/:hubId",
  47. [validatedRequest, flexUserRoleValid([ROLES.admin])],
  48. async (request, response) => {
  49. try {
  50. const { hubId } = request.params;
  51. const result = ImportedPlugin.deletePlugin(hubId);
  52. response.status(200).json(result);
  53. } catch (e) {
  54. console.error(e);
  55. response.status(500).end();
  56. }
  57. }
  58. );
  59. }
  60. module.exports = { importedAgentPluginEndpoints };