Module: KnowItAll

Included in:
Authorizer
Defined in:
lib/know_it_all/string_helper.rb,
lib/know_it_all.rb,
lib/know_it_all/base.rb,
lib/know_it_all/version.rb,
lib/know_it_all/authorizer.rb,
lib/generators/know_it_all/policy/policy_generator.rb,
lib/generators/know_it_all/install/install_generator.rb

Overview

Defined Under Namespace

Modules: Generators Classes: AuthorizationNotPerformedError, Authorizer, Base, NotAuthorized, StringHelper

Constant Summary collapse

SUFFIX =
"Policies"
VERSION =
"0.1.8"

Instance Method Summary collapse

Instance Method Details

#authorize(*args, controller_path: self.controller_path, action_name: self.action_name, policy_name: self.policy_name( controller_path: controller_path, action_name: action_name ), policy_class: self.policy_class(policy_name: policy_name), policy: self.policy(*args, policy_class: policy_class)) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/know_it_all.rb', line 13

def authorize(*args,
               controller_path: self.controller_path,
               action_name: self.action_name,
               policy_name: self.policy_name(
                 controller_path: controller_path,
                 action_name: action_name
               ),
               policy_class: self.policy_class(policy_name: policy_name),
               policy: self.policy(*args, policy_class: policy_class)
              )
  @_authorization_performed = true
  policy.errors
end

#authorize!(*args) ⇒ Object

Raises:



27
28
29
# File 'lib/know_it_all.rb', line 27

def authorize!(*args)
  raise NotAuthorized.new(policy(*args)) unless authorize?(*args)
end

#authorize?(*args) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/know_it_all.rb', line 9

def authorize?(*args)
  authorize(*args).empty?
end

#policy(*args, policy_class: self.policy_class) ⇒ Object



31
32
33
# File 'lib/know_it_all.rb', line 31

def policy(*args, policy_class: self.policy_class)
  policy_class.new(*args)
end

#policy_class(policy_name: self.policy_name) ⇒ Object



35
36
37
# File 'lib/know_it_all.rb', line 35

def policy_class(policy_name: self.policy_name)
  @policy_class = self.class.const_get(policy_name)
end

#policy_name(controller_path: self.controller_path, action_name: self.action_name) ⇒ Object



39
40
41
42
43
44
# File 'lib/know_it_all.rb', line 39

def policy_name(
  controller_path: self.controller_path,
  action_name: self.action_name
)
  "#{KnowItAll::StringHelper.classify(controller_path)}#{SUFFIX}::#{KnowItAll::StringHelper.classify(action_name)}"
end

#render_not_authorized(exception) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/know_it_all.rb', line 46

def render_not_authorized(exception)
  render(
    json: {
      errors: exception.policy.errors
    },
    status: :forbidden
  )
end

#verify_authorizedObject



55
56
57
# File 'lib/know_it_all.rb', line 55

def verify_authorized
  raise AuthorizationNotPerformedError unless @_authorization_performed
end