Module: Glib::Auth::Policy
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/controllers/concerns/glib/auth/policy.rb
Defined Under Namespace
Modules: ClassMethods, Overrides
Classes: UnauthorizedError
Instance Method Summary
collapse
Instance Method Details
#can?(action, record, context = nil) ⇒ Boolean
62
63
64
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 62
def can?(action, record, context = nil)
policy(record, nil, context).send("#{action}?")
end
|
#cannot?(action, record, context = nil) ⇒ Boolean
67
68
69
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 67
def cannot?(action, record, context = nil)
!policy(record, nil, context).send("#{action}?")
end
|
#glib_authorize_resource(*args) ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 73
def glib_authorize_resource(*args)
options = args.
resource_name = args.first
resource_name ||= controller_name.split('/').last.singularize
if (resource_key = options[:class]).nil?
policy_name = resource_name.camelize.constantize
else
policy_name = case resource_key
when false
resource_name.to_sym
when Symbol, Class
resource_key
else
raise "Invalid resource class: #{resource_key}"
end
end
resource_instance = instance_variable_get("@#{resource_name}") || policy_name
query = "#{action_name}?"
policy_instance = policy(resource_instance, policy_name, options.fetch(:context, nil))
raise_access_denied(resource_instance, policy_instance) unless policy_instance.public_send(query)
end
|
#resource_name_from_controller ⇒ Object
153
154
155
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 153
def resource_name_from_controller
params[:controller].split('/').last.singularize
end
|