Module: Hubbado::Sequence::Controls::Policy

Defined in:
lib/hubbado/sequence/controls/policy.rb

Defined Under Namespace

Classes: PolicyResult

Class Method Summary collapse

Class Method Details

.example_class(decision: :permit, action: :update) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/hubbado/sequence/controls/policy.rb', line 19

def self.example_class(decision: :permit, action: :update)
  Class.new do
    attr_reader :user, :record

    define_singleton_method(:default_decision) { decision }
    define_singleton_method(:default_action) { action }

    def self.build(user, record)
      new(user, record)
    end

    def initialize(user, record)
      @user = user
      @record = record
    end

    define_method(action) do
      decision = self.class.default_decision
      if decision == :permit
        PolicyResult.new(true, :permitted)
      else
        PolicyResult.new(false, :not_owner)
      end
    end
  end
end