Sha256: ed09e068b0f0fd38ee0c5e5abf93af688e6a8d645c3d5124642b51370e7d4bf6

Contents?: true

Size: 1.42 KB

Versions: 36

Compression:

Stored size: 1.42 KB

Contents

module Lolita
  module Extensions
    module Authentication
      
      class DeviseAdapter
        def initialize context, options={}
          raise Lolita::NoAuthenticationDefinedError, "Lolita.authentication is not defined" unless Lolita.authentication
          @context = context
        end

        def current_user
          unless @current_user
            find_class_and_user do |klass,user|
              @current_user = user
            end
          end
          @current_user
        end
        
        def user_signed_in?
          !!current_user
        end

        def authenticate_user! *args
          @context.send(Lolita.authentication)
        end

        def sign_out_via
          ::Devise.sign_out_via
        end
        
        def edit_path
          find_class_and_user do |klass,user|
            return @context.send(:"edit_#{klass.to_s.downcase}_password_path")
          end
        end

        def sign_out_path
          find_class_and_user do |klass,user|
            return @context.send(:"destroy_#{klass.to_s.downcase}_session_path")
          end
        end

        private

        def find_class_and_user
          Lolita.user_classes.each do |klass|
            if @context.respond_to?(:"current_#{klass.to_s.downcase}") && user = @context.send(:"current_#{klass.to_s.downcase}")
              yield klass, user
              break
            end
          end
        end
      end

    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
lolita-4.0.11 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.2.0 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.10 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.9 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.8 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.7 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.6 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.5 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.4 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.3 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.2 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.1 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-4.0.0 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.4.3 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.4.2 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.4.1 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.4.0 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.3.9 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.3.8 lib/lolita/extensions/authentication/devise_adapter.rb
lolita-3.3.7 lib/lolita/extensions/authentication/devise_adapter.rb