Sha256: 0573d6756ebc7dcf1746313e5265141570567a7aa98458fc991b43e615b9b479

Contents?: true

Size: 941 Bytes

Versions: 10

Compression:

Stored size: 941 Bytes

Contents

module Dorsale::Flyboy::TaskPolicyHelper
  POLICY_METHODS = [
    :list?,
    :export?,
    :create?,
    :read?,
    :update?,
    :delete?,
    :complete?,
    :snooze?,
  ]

  def create?
    return false if folder_is_closed?
    return false if cannot_read_taskable?
    super
  end

  def update?
    return false if folder_is_closed?
    super
  end

  def delete?
    return false if folder_is_closed?
    super
  end

  def complete?
    return false if task.done?
    super
  end

  def snooze?
    return false unless task.snoozable?
    super
  end

  private

  def folder_is_closed?
    return false unless task.is_a?(::Dorsale::Flyboy::Task)
    return false unless task.taskable.is_a?(::Dorsale::Flyboy::Folder)

    task.taskable.closed?
  end

  def cannot_read_taskable?
    return false unless task.is_a?(::Dorsale::Flyboy::Task)
    return false unless task.taskable.present?

    ! policy(task.taskable).read?
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
dorsale-3.3.0 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.2.0 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.7 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.6 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.5 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.4 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.3 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.2 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.1 app/policies/dorsale/flyboy/task_policy_helper.rb
dorsale-3.1.0 app/policies/dorsale/flyboy/task_policy_helper.rb