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.

39 lines
1.1 KiB

11 months ago
  1. const { SystemSettings } = require("../../models/systemSettings");
  2. /**
  3. * Checks if simple SSO is enabled for issuance of temporary auth tokens.
  4. * Note: This middleware must be called after `validApiKey`.
  5. * @param {import("express").Request} request
  6. * @param {import("express").Response} response
  7. * @param {import("express").NextFunction} next
  8. * @returns {void}
  9. */
  10. async function simpleSSOEnabled(_, response, next) {
  11. if (!("SIMPLE_SSO_ENABLED" in process.env)) {
  12. return response
  13. .status(403)
  14. .send(
  15. "Simple SSO is not enabled. It must be enabled to validate or issue temporary auth tokens."
  16. );
  17. }
  18. // If the multi-user mode response local is not set, we need to check if it's enabled.
  19. if (!("multiUserMode" in response.locals)) {
  20. const multiUserMode = await SystemSettings.isMultiUserMode();
  21. response.locals.multiUserMode = multiUserMode;
  22. }
  23. if (!response.locals.multiUserMode) {
  24. return response
  25. .status(403)
  26. .send(
  27. "Multi-User mode is not enabled. It must be enabled to use Simple SSO."
  28. );
  29. }
  30. next();
  31. }
  32. module.exports = {
  33. simpleSSOEnabled,
  34. };