Sha256: 5177abc9c8885a35b73a759e0a38fc48f62812500bf07d72926b128b43535456

Contents?: true

Size: 1.55 KB

Versions: 10

Compression:

Stored size: 1.55 KB

Contents

require 'authenticate/callbacks/trackable'

module Authenticate
  module Model
    #
    # Track information about your user sign ins. This module is always enabled.
    #
    # = Methods
    # * update_tracked_fields - update the user's tracked fields based on the request.
    # * update_tracked_fields! - update tracked fields and save immediately, bypassing validations
    #
    # = Columns
    # - sign_in_count - increase every time a sign in is successful
    # - current_sign_in_at - a timestamp updated at each sign in
    # - last_sign_in_at - a timestamp of the previous sign in
    # - current_sign_in_ip - the remote ip address of the user at sign in
    # - previous_sign_in_ip - the remote ip address of the previous sign in
    #
    module Trackable
      extend ActiveSupport::Concern

      def self.required_fields(_klass)
        [:current_sign_in_at, :current_sign_in_ip, :last_sign_in_at, :last_sign_in_ip, :sign_in_count]
      end

      def update_tracked_fields(request)
        old_current = current_sign_in_at
        new_current = Time.now.utc
        self.last_sign_in_at     = old_current || new_current
        self.current_sign_in_at  = new_current

        old_current = current_sign_in_ip
        new_current = request.remote_ip
        self.last_sign_in_ip     = old_current || new_current
        self.current_sign_in_ip  = new_current

        self.sign_in_count ||= 0
        self.sign_in_count += 1
      end

      def update_tracked_fields!(request)
        update_tracked_fields(request)
        save(validate: false)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
authenticate-0.7.3 lib/authenticate/model/trackable.rb
authenticate-0.7.2 lib/authenticate/model/trackable.rb
authenticate-0.7.1 lib/authenticate/model/trackable.rb
authenticate-0.7.0 lib/authenticate/model/trackable.rb
authenticate-0.6.1 lib/authenticate/model/trackable.rb
authenticate-0.6.0 lib/authenticate/model/trackable.rb
authenticate-0.5.0 lib/authenticate/model/trackable.rb
authenticate-0.4.0 lib/authenticate/model/trackable.rb
authenticate-0.3.3 lib/authenticate/model/trackable.rb
authenticate-0.3.2 lib/authenticate/model/trackable.rb