Sha256: e5300115f526c760713128be4accd31737536bf24695e47936d9a8a42486571e
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
module Sufia module Ability extend ActiveSupport::Concern included do self.ability_logic += [:user_abilities, :featured_work_abilities, :editor_abilities, :stats_abilities, :citation_abilities, :proxy_deposit_abilities, :uploaded_file_abilities] end def uploaded_file_abilities return unless registered_user? can :create, UploadedFile can :destroy, UploadedFile, user: current_user end 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 def user_abilities can [:edit, :update, :toggle_trophy], ::User, id: current_user.id end def featured_work_abilities can [:create, :destroy, :update], FeaturedWork if admin? end def editor_abilities can :read, ContentBlock return unless admin? can :create, TinymceAsset can [:create, :update], ContentBlock can :edit, ::SolrDocument end def stats_abilities can :read, Sufia::Statistics if admin? alias_action :stats, to: :read end def citation_abilities alias_action :citation, to: :read end private def depositor_for_document(document_id) ::GenericWork.load_instance_from_solr(document_id).depositor end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sufia-7.0.0.beta4 | app/models/concerns/sufia/ability.rb |
sufia-7.0.0.beta3 | app/models/concerns/sufia/ability.rb |