Sha256: 15150c8b7234fe6deb6f3b7f612ebed4bce4a5b09660ac843db1ab3bd668b06a

Contents?: true

Size: 978 Bytes

Versions: 1

Compression:

Stored size: 978 Bytes

Contents

class SecureToken
  inherit Mongo::Model
  # TODO3 rename to :tokens
  collection :secure_tokens

  EXPIRES_IN = 30

  rad.extension :secure_token, self

  # attr_writer :values
  # def values; @values ||= {} end
  def [] k
    instance_variable_get :"@#{k}"
  end
  def []= k, v
    instance_variable_set :"@#{k}", v
  end

  attr_writer :token
  def token; @token ||= String.secure_token end
  validates_presence_of :token

  attr_writer :expires_at
  def expires_at; @expires_at ||= EXPIRES_IN.minutes.from_now end
  validates_presence_of :expires_at

  timestamps!

  def expired?
    expires_at >= Time.now.utc
  end

  class << self
    def by_token token
      return nil if token.blank?
      first token: token, expires_at: {_gte: Time.now.utc}
    end
    alias_method :first_by_token, :by_token

    def by_token! token
      return by_token(token) || raise(Mongo::NotFound, "token #{token} not found!")
    end
    alias_method :first_by_token!, :by_token!
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rad_kit-0.0.10 app/models/secure_token.rb