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

Returns:

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

Returns:

  • (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.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)
  raise_access_denied(resource_instance, policy_instance) unless policy_instance.public_send(query)
end

#resource_name_from_controllerObject



144
145
146
# File 'app/controllers/concerns/glib/auth/policy.rb', line 144

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