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