Module: Dorsale::Flyboy::AbilityHelper

Defined in:
app/models/dorsale/flyboy/ability_helper.rb

Instance Method Summary collapse

Instance Method Details

#define_dorsale_flyboy_abilitiesObject



4
5
6
7
8
9
10
# File 'app/models/dorsale/flyboy/ability_helper.rb', line 4

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

#define_dorsale_flyboy_common_restrictionsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/dorsale/flyboy/ability_helper.rb', line 12

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