Sha256: aebedc8bbd04f54e0d563698776ad70d491491a7c1d92984b9da4f5ed0cdaee3

Contents?: true

Size: 1.22 KB

Versions: 19

Compression:

Stored size: 1.22 KB

Contents

module Lolita
  module Extensions
    module Authorization
      
      class CanCanAdapter
        
        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

        def can? *args
          current_ability.can?(*args)
        end

        def cannot? *args
          current_ability.cannot?(*args)
        end

        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

        def authorize! *args
          current_ability && @context && @context.authorize!(*args) || current_ability.authorize!(*args)
        end
        
        private

        def set_default_options
          @options[:current_user] ||= @context && @context.authentication_proxy.current_user
        end
      end

    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
lolita-3.3.9 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.8 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.7 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.6 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.5 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.4 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.3 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.2 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.1 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.3.0 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.1 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.17 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.16 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.14 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.13 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.12 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.11 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.10 lib/lolita/extensions/authorization/cancan_adapter.rb
lolita-3.2.0.rc.9 lib/lolita/extensions/authorization/cancan_adapter.rb