Sha256: d144493510813b4588925c23392db299095393f31c326255f797af96f0502f85

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 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 >= Time.zone.now.to_date
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dorsale-3.0.3 app/models/dorsale/flyboy/ability_helper.rb
dorsale-3.0.2 app/models/dorsale/flyboy/ability_helper.rb
dorsale-3.0.1 app/models/dorsale/flyboy/ability_helper.rb
dorsale-3.0.0 app/models/dorsale/flyboy/ability_helper.rb