Sha256: fc55985a1c49eaad07c19fb27556d1054376d2a87dc584b542363a968c973ff8

Contents?: true

Size: 714 Bytes

Versions: 2

Compression:

Stored size: 714 Bytes

Contents

module Ddr
  module Auth
    class PublicationAbilityDefinitions < AbilityDefinitions

      # An object can't be published if it's already published or not publishable
      # It can't be unpublished if it's already unpublished
      # It can't be made nonpublishable if it's already published (must be unpublished 
      # first) or already nonpublishable
      def call
        cannot :publish, Ddr::Resource do |obj|
          obj.published? || !obj.publishable?
        end
        cannot :unpublish, Ddr::Resource do |obj|
          !obj.published?
        end
        cannot :make_nonpublishable, Ddr::Resource do |obj|
          obj.published? || !obj.publishable?
        end
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ddr-core-1.2.0.rc2 lib/ddr/auth/ability_definitions/publication_ability_definitions.rb
ddr-core-1.2.0.rc1 lib/ddr/auth/ability_definitions/publication_ability_definitions.rb