Module: AccessPolicyRails::ControllerExtensions::ClassMethods

Defined in:
lib/access_policy_rails/controller_extensions.rb

Instance Method Summary collapse

Instance Method Details

#authorized_action(action_name, &block) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/access_policy_rails/controller_extensions.rb', line 43

def authorized_action(action_name, &block)
  action_name_guarded = "#{action_name}_with_guard".to_sym
  policy_guarded_method action_name_guarded, action_name ,&block

  define_method action_name do
    with_user_or_role(policy_check_user) do
      self.send(action_name_guarded)
    end
  end

  hide_action action_name_guarded
  hide_action unsafe_action_name(action_name_guarded)
end

#authorized_service(action_name, &block) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/access_policy_rails/controller_extensions.rb', line 57

def authorized_service(action_name, &block)

  define_method action_name do
    with_user_or_role(policy_check_user) do
      instance_exec &block
    end
  end

end

#guarded_action(action_name, authorize_action: true, &block) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/access_policy_rails/controller_extensions.rb', line 35

def guarded_action(action_name, authorize_action: true, &block)
  if authorize_action
    authorized_action(action_name, &block)
  else
    authorized_service(action_name, &block)
  end
end