monitoring_controller_policy.rb 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. class Controllers::MonitoringControllerPolicy < Controllers::ApplicationControllerPolicy
  3. def health_check?
  4. token_or_permission?
  5. end
  6. def status?
  7. token_or_permission?
  8. end
  9. def amount_check?
  10. token_or_permission?
  11. end
  12. def token?
  13. permission_and_permission_active?
  14. end
  15. def restart_failed_jobs?
  16. permission_and_permission_active?
  17. end
  18. private
  19. def user_required?
  20. false
  21. end
  22. def token_or_permission?
  23. return true if user.present? && monitoring_admin!
  24. return true if valid_token_param?
  25. not_authorized
  26. end
  27. def permission_and_permission_active?
  28. user_required!
  29. monitoring_admin!
  30. return true if permission_active?
  31. not_authorized
  32. end
  33. def valid_token_param?
  34. Setting.get('monitoring_token') == record.params[:token]
  35. end
  36. def permission_active?
  37. Permission.exists?(name: 'admin.monitoring', active: true)
  38. end
  39. def monitoring_admin!
  40. user.permissions!('admin.monitoring')
  41. true
  42. end
  43. end