has_knowledge_base_attachment_permissions.rb 809 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. module HasKnowledgeBaseAttachmentPermissions
  3. extend ActiveSupport::Concern
  4. class_methods do
  5. def can_show_attachment?(file, user)
  6. return true if user_kb_editor?(user)
  7. object = find(file.o_id)
  8. return object&.visible_internally? if user_kb_reader?(user)
  9. object&.visible?
  10. end
  11. def can_destroy_attachment?(_file, user)
  12. return if !user_kb_editor?(user)
  13. true
  14. end
  15. def user_kb_editor?(user)
  16. return false if user.nil?
  17. user.permissions? %w[knowledge_base.editor]
  18. end
  19. def user_kb_reader?(user)
  20. return false if user.nil?
  21. user.permissions? %w[knowledge_base.reader]
  22. end
  23. end
  24. included do
  25. private_class_method :user_kb_editor?
  26. end
  27. end