Sha256: 0d0537fd07963a290d78f8a330df91734ae87001752ed595dff5420d440d69a2

Contents?: true

Size: 1.29 KB

Versions: 55

Compression:

Stored size: 1.29 KB

Contents

module Dorsale
  module Flyboy
    module AbilityHelper
      def define_dorsale_flyboy_abilities
        # Allowed actions (all by default)
        can [:list, :create, :read, :update, :delete, :open, :close], ::Dorsale::Flyboy::Folder
        can [:list, :create, :read, :update, :delete, :complete, :snooze], ::Dorsale::Flyboy::Task

        define_dorsale_flyboy_common_restrictions
      end

      def define_dorsale_flyboy_common_restrictions
        cannot [:update, :delete], ::Dorsale::Flyboy::Folder do |folder|
          folder.closed?
        end

        cannot :close, ::Dorsale::Flyboy::Folder do |folder|
          not folder.may_close?
        end

        cannot :open, ::Dorsale::Flyboy::Folder do |folder|
          not folder.may_open?
        end

        cannot :create, ::Dorsale::Flyboy::Task do |task|
          task.taskable.present? && cannot?(:read, task.taskable)
        end

        cannot [:create, :update, :delete], ::Dorsale::Flyboy::Task do |task|
          task.taskable.is_a?(::Dorsale::Flyboy::Folder) && task.taskable.closed?
        end

        cannot :complete, ::Dorsale::Flyboy::Task do |task|
          task.done?
        end

        cannot :snooze, ::Dorsale::Flyboy::Task do |task|
          task.done? || task.reminder >= Date.today
        end
      end
    end
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
dorsale-2.7.3 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.7.2 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.7.1 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.7.0 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.8 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.7 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.6 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.5 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.4 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.3 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.2 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.1 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.6.0 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.5.0 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.4.3 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.4.2 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.4.1 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.4.0 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.3.5 app/models/dorsale/flyboy/ability_helper.rb
dorsale-2.3.4 app/models/dorsale/flyboy/ability_helper.rb