Module: Sufia::Ability

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

Instance Method Summary collapse

Instance Method Details

#citation_abilitiesObject



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

def citation_abilities
  alias_action :citation, to: :read
end

#editor_abilitiesObject



43
44
45
46
47
48
49
# File 'app/models/concerns/sufia/ability.rb', line 43

def editor_abilities
  if admin_user?
    can :create, TinymceAsset
    can [:create, :update], ContentBlock
  end
  can :read, ContentBlock
end


34
35
36
# File 'app/models/concerns/sufia/ability.rb', line 34

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

#generic_file_abilitiesObject



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

def generic_file_abilities
  can :view_share_work, [GenericFile]
  can :create, [GenericFile, Collection] if registered_user?
end

#proxy_deposit_abilitiesObject



19
20
21
22
23
24
25
26
27
28
# File 'app/models/concerns/sufia/ability.rb', line 19

def proxy_deposit_abilities
  can :transfer, String do |id|
    depositor_for_document(id) == current_user.user_key
  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



51
52
53
# File 'app/models/concerns/sufia/ability.rb', line 51

def stats_abilities
  alias_action :stats, to: :read
end

#sufia_abilitiesObject



9
10
11
12
13
14
15
16
17
# File 'app/models/concerns/sufia/ability.rb', line 9

def sufia_abilities
  generic_file_abilities
  user_abilities
  featured_work_abilities
  editor_abilities
  stats_abilities
  citation_abilities
  proxy_deposit_abilities
end

#user_abilitiesObject



30
31
32
# File 'app/models/concerns/sufia/ability.rb', line 30

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