settings_controller_policy.rb 927 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. class Controllers::SettingsControllerPolicy < Controllers::ApplicationControllerPolicy
  2. default_permit!('admin.*')
  3. def show?
  4. user.permissions!('admin.*')
  5. authorized_for_setting?(:show?)
  6. end
  7. def update?
  8. updateable?
  9. end
  10. def update_image?
  11. updateable?
  12. end
  13. private
  14. def setting
  15. @setting ||= Setting.lookup(id: record.params[:id])
  16. end
  17. def authorized_for_setting?(query)
  18. Pundit.authorize(user, setting, query)
  19. true
  20. rescue Pundit::NotAuthorizedError
  21. not_authorized("required #{setting.preferences[:permission].inspect}")
  22. end
  23. def updateable?
  24. return false if !user.permissions?('admin.*')
  25. return false if !authorized_for_setting?(:update?)
  26. service_enabled?
  27. end
  28. def service_enabled?
  29. return true if !Setting.get('system_online_service')
  30. return true if !setting.preferences[:online_service_disable]
  31. not_authorized('service disabled')
  32. end
  33. end