Sha256: 509b83059a5038dd739acbfedc7bcf0da44d2a8e5eb3ab7ae2396f706aca7092

Contents?: true

Size: 1.27 KB

Versions: 21

Compression:

Stored size: 1.27 KB

Contents

require 'devise/hooks/timeoutable'

module Devise
  module Models
    # Timeoutable takes care of veryfing whether a user session has already
    # expired or not. When a session expires after the configured time, the user
    # will be asked for credentials again, it means, he/she will be redirected
    # to the sign in page.
    #
    # == Options
    #
    # Timeoutable adds the following options to devise_for:
    #
    #   * +timeout_in+: the interval to timeout the user session without activity.
    #
    # == Examples
    #
    #   user.timedout?(30.minutes.ago)
    #
    module Timeoutable
      extend ActiveSupport::Concern

      def self.required_fields(klass)
        []
      end

      # Checks whether the user session has expired based on configured time.
      def timedout?(last_access)
        return false if remember_exists_and_not_expired?
        !timeout_in.nil? && last_access && last_access <= timeout_in.ago
      end

      def timeout_in
        self.class.timeout_in
      end

      private

      def remember_exists_and_not_expired?
        return false unless respond_to?(:remember_created_at)
        remember_created_at && !remember_expired?
      end

      module ClassMethods
        Devise::Models.config(self, :timeout_in)
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 6 rubygems

Version Path
devise-2.1.4 lib/devise/models/timeoutable.rb
devise-warbler-2.2.3 lib/devise/models/timeoutable.rb
devise-2.2.3 lib/devise/models/timeoutable.rb
devise-2.1.3 lib/devise/models/timeoutable.rb
devise-2.2.2 lib/devise/models/timeoutable.rb
devise-2.2.1 lib/devise/models/timeoutable.rb
devise-2.2.0 lib/devise/models/timeoutable.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/devise-2.2.0.rc/lib/devise/models/timeoutable.rb
devise-2.2.0.rc lib/devise/models/timeoutable.rb
af-devise-2.1.2 lib/devise/models/timeoutable.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/devise-2.1.0/lib/devise/models/timeoutable.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/devise-2.1.0/lib/devise/models/timeoutable.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/devise-2.1.0/lib/devise/models/timeoutable.rb
devise-2.1.2 lib/devise/models/timeoutable.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/devise-2.1.0/lib/devise/models/timeoutable.rb
rmello-devise-2.1.0.2 lib/devise/models/timeoutable.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/devise-2.1.0/lib/devise/models/timeoutable.rb
devise-2.1.0 lib/devise/models/timeoutable.rb
devise-2.1.0.rc2 lib/devise/models/timeoutable.rb
upstream-devise-2.1.0.rc lib/devise/models/timeoutable.rb