Sha256: 8d83ca6b66e27917c904fa131325b32a4afc866959d6e7be836a27b9a30de10d

Contents?: true

Size: 713 Bytes

Versions: 2

Compression:

Stored size: 713 Bytes

Contents

class PasswordResetToken < ActiveRecord::Base
  belongs_to :user
  before_create :ensure_token
  before_create :ensure_expiration

  validates :user_id, presence: true

  scope :active,  -> { where("expires_at >= ?", Time.now) }
  scope :expired, -> { where("expires_at < ?", Time.now) }

  class << self
    def default_expiration
      24.hours
    end

    def expire!
      expired.delete_all
    end

    def find_by_token(token)
      active.where(token: token).first
    end
  end

  def expired?
    expires_at < Time.now
  end

  private

  def ensure_expiration
    self.expires_at ||= Time.now + self.class.default_expiration
  end

  def ensure_token
    self.token ||= SecureRandom.hex(32)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pages_core-3.4.3 app/models/password_reset_token.rb
pages_core-3.4.2 app/models/password_reset_token.rb