Module: Sufia::Ability

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

Instance Method Summary collapse

Instance Method Details

#editor_abilitiesObject



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

def editor_abilities
  if user_groups.include? 'admin'
    can :create, TinymceAsset
    can :update, ContentBlock
  end
end


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

def featured_work_abilities
  can [:create, :destroy, :update], FeaturedWork if user_groups.include? 'admin'
end

#generic_file_abilitiesObject



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

def generic_file_abilities
  can :create, [GenericFile, Collection] if user_groups.include? 'registered'
end

#proxy_deposit_abilitiesObject



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

def proxy_deposit_abilities
  can :transfer, String do |pid|
    get_depositor_from_pid(pid) == current_user.user_key
  end
  can :create, ProxyDepositRequest if user_groups.include? 'registered'
  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'
  can :edit, ::User, id: current_user.id
end

#stats_abilitiesObject



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

def stats_abilities
  alias_action :stats, to: :read
end

#sufia_abilitiesObject



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

def sufia_abilities
  generic_file_abilities
  featured_work_abilities
  editor_abilities
  stats_abilities
  proxy_deposit_abilities
end