AdminAuthorizationHelper.js 833 B

123456789101112131415161718192021222324252627282930313233
  1. const Settings = require('@overleaf/settings')
  2. const Modules = require('../../infrastructure/Modules')
  3. module.exports = {
  4. hasAdminAccess,
  5. canRedirectToAdminDomain,
  6. getAdminCapabilities,
  7. }
  8. function hasAdminAccess(user) {
  9. if (!Settings.adminPrivilegeAvailable) return false
  10. if (!user) return false
  11. return Boolean(user.isAdmin)
  12. }
  13. async function getAdminCapabilities(user) {
  14. const rawAdminCapabilties = await Modules.promises.hooks.fire(
  15. 'getAdminCapabilities',
  16. user
  17. )
  18. return {
  19. adminCapabilities: [...new Set(rawAdminCapabilties.flat())],
  20. adminCapabilitiesAvailable: rawAdminCapabilties.length > 0,
  21. }
  22. }
  23. function canRedirectToAdminDomain(user) {
  24. if (Settings.adminPrivilegeAvailable) return false
  25. if (!Settings.adminUrl) return false
  26. if (!user) return false
  27. return Boolean(user.isAdmin)
  28. }