module KnowItAll

Extracted from hanami-utils: github.com/hanami/utils/blob/3d7aa877182a545654b2ebd3a2a495546051ac91/lib/hanami/utils/string.rb

Constants

SUFFIX
VERSION

Public Instance Methods

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) ) click to toggle source
# 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) click to toggle source
# File lib/know_it_all.rb, line 27
def authorize!(*args)
  raise NotAuthorized.new(policy(*args)) unless authorize?(*args)
end
authorize?(*args) click to toggle source
# File lib/know_it_all.rb, line 9
def authorize?(*args)
  authorize(*args).empty?
end
policy(*args, policy_class: self.policy_class) click to toggle source
# 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) click to toggle source
# 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 ) click to toggle source
# 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) click to toggle source
# File lib/know_it_all.rb, line 46
def render_not_authorized(exception)
  render(
    json: {
      errors: exception.policy.errors
    },
    status: :forbidden
  )
end
verify_authorized() click to toggle source
# File lib/know_it_all.rb, line 55
def verify_authorized
  raise AuthorizationNotPerformedError unless @_authorization_performed
end