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, attributes = {}) ⇒ Boolean
54
55
56
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 54
def can?(action, record, attributes = {})
policy(record, nil, attributes).send("#{action}?")
end
|
#cannot?(action, record) ⇒ Boolean
59
60
61
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 59
def cannot?(action, record)
!policy(record).send("#{action}?")
end
|
#glib_authorize_resource(*args) ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 65
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.except(:class))
raise_access_denied(resource_instance, policy_instance) unless policy_instance.public_send(query)
end
|
#resource_name_from_controller ⇒ Object
145
146
147
|
# File 'app/controllers/concerns/glib/auth/policy.rb', line 145
def resource_name_from_controller
params[:controller].split('/').last.singularize
end
|