class Lolita::Extensions::Authorization::CanCanAdapter

Public Class Methods

new(context, options={}) click to toggle source
# File lib/lolita/extensions/authorization/cancan_adapter.rb, line 7
def initialize context, options={}
  raise NameError, "CanCan is not defined" unless defined?(CanCan)
  raise Lolita::NoAuthorizationDefinedError, "Lolita.authorization is not defined" unless Lolita.authorization
  @context = context
  @options = options
  set_default_options
  current_ability
end

Public Instance Methods

authorize!(*args) click to toggle source
# File lib/lolita/extensions/authorization/cancan_adapter.rb, line 32
def authorize! *args
  current_ability && @context && @context.authorize!(*args) || current_ability.authorize!(*args)
end
can?(*args) click to toggle source
# File lib/lolita/extensions/authorization/cancan_adapter.rb, line 16
def can? *args
  current_ability.can?(*args)
end
cannot?(*args) click to toggle source
# File lib/lolita/extensions/authorization/cancan_adapter.rb, line 20
def cannot? *args
  current_ability.cannot?(*args)
end
current_ability(*args) click to toggle source
# File lib/lolita/extensions/authorization/cancan_adapter.rb, line 24
def current_ability *args
  unless @current_ability 
    @current_ability = Lolita.ability_class.new(@options[:current_user])
    @context && @context.instance_variable_set(:"@current_ability",@current_ability)
  end
  @current_ability
end

Private Instance Methods

set_default_options() click to toggle source
# File lib/lolita/extensions/authorization/cancan_adapter.rb, line 38
def set_default_options
  @options[:current_user] ||= @context && @context.authentication_proxy.current_user
end