Module: Kojac

Extended by:
ActiveSupport::Concern
Defined in:
lib/kojac/kojac_policy.rb,
lib/kojac.rb,
lib/kojac/version.rb,
lib/kojac/kojac_rails.rb,
lib/kojac/kojac_rails.rb

Overview

require “active_support/core_ext/object/blank”

Defined Under Namespace

Modules: ControllerOpMethods, ModelMethods, Rails Classes: NotFoundError

Constant Summary collapse

VERSION =
"0.11.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.policy(user, record, op = nil) ⇒ Object



23
24
25
26
# File 'lib/kojac/kojac_policy.rb', line 23

def policy(user, record, op=nil)
  scope = Pundit::PolicyFinder.new(record).policy
  scope.new(user, record, op) if scope
end

.policy!(user, record, op = nil) ⇒ Object



28
29
30
# File 'lib/kojac/kojac_policy.rb', line 28

def policy!(user, record, op=nil)
 Pundit::PolicyFinder.new(record).policy!.new(user, record, op)
end

.policy_scope(user, scope, op = nil) ⇒ Object



14
15
16
17
# File 'lib/kojac/kojac_policy.rb', line 14

def policy_scope(user, scope, op=nil)
  policy = Pundit::PolicyFinder.new(scope).scope
  policy.new(user, scope, op).resolve if policy
end

.policy_scope!(user, scope, op = nil) ⇒ Object



19
20
21
# File 'lib/kojac/kojac_policy.rb', line 19

def policy_scope!(user, scope, op=nil)
 Pundit::PolicyFinder.new(scope).scope!.new(user, scope, op).resolve
end

Instance Method Details

#authorize(record, query = nil) ⇒ Object



53
54
55
56
57
58
59
60
# File 'lib/kojac/kojac_policy.rb', line 53

def authorize(record, query=nil)
  query ||= params[:action].to_s + "?"
  @_policy_authorized = true
  unless policy(record).public_send(query)
    raise NotAuthorizedError, "not allowed to #{query} this #{record}"
  end
  true
end

#policy(record) ⇒ Object



67
68
69
# File 'lib/kojac/kojac_policy.rb', line 67

def policy(record)
 Pundit::Pundit.policy!(current_user, record, op)
end

#policy_scope(scope) ⇒ Object



62
63
64
65
# File 'lib/kojac/kojac_policy.rb', line 62

def policy_scope(scope)
  @_policy_scoped = true
  Pundit::Pundit.policy_scope!(current_user, scope, op)
end

#verify_authorizedObject

Raises:

  • (NotAuthorizedError)


45
46
47
# File 'lib/kojac/kojac_policy.rb', line 45

def verify_authorized
  raise NotAuthorizedError unless @_policy_authorized
end

#verify_policy_scopedObject

Raises:

  • (NotAuthorizedError)


49
50
51
# File 'lib/kojac/kojac_policy.rb', line 49

def verify_policy_scoped
  raise NotAuthorizedError unless @_policy_scoped
end