Module: Sufia::Ability

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/sufia/ability.rb

Instance Method Summary collapse

Instance Method Details

#admin_set_abilitiesObject



68
69
70
71
72
73
74
75
76
77
78
# File 'app/models/concerns/sufia/ability.rb', line 68

def admin_set_abilities
  can :manage, [AdminSet, Sufia::PermissionTemplate, Sufia::PermissionTemplateAccess] if admin?

  can [:create, :edit, :update, :destroy], Sufia::PermissionTemplate do |template|
    test_edit(template.admin_set_id)
  end

  can [:create, :edit, :update, :destroy], Sufia::PermissionTemplateAccess do |access|
    test_edit(access.permission_template.admin_set_id)
  end
end

#citation_abilitiesObject



60
61
62
# File 'app/models/concerns/sufia/ability.rb', line 60

def citation_abilities
  alias_action :citation, to: :read
end

#editor_abilitiesObject



45
46
47
48
49
50
51
52
53
# File 'app/models/concerns/sufia/ability.rb', line 45

def editor_abilities
  can :read, ContentBlock
  return unless admin?

  can :read, :admin_dashboard
  can :create, TinymceAsset
  can [:create, :update], ContentBlock
  can :edit, ::SolrDocument
end

#feature_abilitiesObject



64
65
66
# File 'app/models/concerns/sufia/ability.rb', line 64

def feature_abilities
  can :manage, Sufia::Feature if admin?
end


41
42
43
# File 'app/models/concerns/sufia/ability.rb', line 41

def featured_work_abilities
  can [:create, :destroy, :update], FeaturedWork if admin?
end

#proxy_deposit_abilitiesObject



26
27
28
29
30
31
32
33
34
35
# File 'app/models/concerns/sufia/ability.rb', line 26

def proxy_deposit_abilities
  can :transfer, String do |id|
    user_is_depositor?(id)
  end
  can :create, ProxyDepositRequest if registered_user?
  can :accept, ProxyDepositRequest, receiving_user_id: current_user.id, status: 'pending'
  can :reject, ProxyDepositRequest, receiving_user_id: current_user.id, status: 'pending'
  # a user who sent a proxy deposit request can cancel it if it's pending.
  can :destroy, ProxyDepositRequest, sending_user_id: current_user.id, status: 'pending'
end

#stats_abilitiesObject



55
56
57
58
# File 'app/models/concerns/sufia/ability.rb', line 55

def stats_abilities
  can :read, Sufia::Statistics if admin?
  alias_action :stats, to: :read
end

#uploaded_file_abilitiesObject



17
18
19
20
21
22
23
24
# File 'app/models/concerns/sufia/ability.rb', line 17

def uploaded_file_abilities
  return unless registered_user?
  can :create, [UploadedFile, BatchUploadItem]
  can :destroy, UploadedFile, user: current_user
  # BatchUploadItem permissions depend on the kind of objects being made by the batch,
  # but it must be authorized directly in the controller, not here.
  # Note: cannot call `authorized_models` without going recursive.
end

#user_abilitiesObject



37
38
39
# File 'app/models/concerns/sufia/ability.rb', line 37

def user_abilities
  can [:edit, :update, :toggle_trophy], ::User, id: current_user.id
end