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

Returns:

  • (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

Returns:

  • (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.extract_options!
  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_controllerObject



153
154
155
# File 'app/controllers/concerns/glib/auth/policy.rb', line 153

def resource_name_from_controller
  params[:controller].split('/').last.singularize
end