Module: Tokens::ActiveRecord::InstanceMethods

Defined in:
lib/tokens/active_record.rb

Instance Method Summary collapse

Instance Method Details

#add_token(name, options = {}) ⇒ Object

Add a new token.

@user.add_token(:api_key, :expires_at => nil)
@user.add_token(:api_key, :size => 20)
@user.add_token(:api_key, :data => data.to_yaml)


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/tokens/active_record.rb', line 117

def add_token(name, options={})
  options.reverse_merge!({
    :expires_at => 2.days.from_now,
    :size => 12,
    :data => nil
  })

  remove_token(name)
  attrs = {
    :name       => name.to_s,
    :token      => self.class.generate_token(options[:size]),
    :expires_at => options[:expires_at],
    :data       => options[:data]
  }

  self.tokens.create!(attrs)
end

#find_token(name, token) ⇒ Object

Find a token.

@user.find_token(:activation, "abcdefg")


88
89
90
91
92
93
94
# File 'lib/tokens/active_record.rb', line 88

def find_token(name, token)
  self.class.find_token(
    :tokenizable_id => self.id,
    :name => name.to_s,
    :token => token
  )
end

#find_token_by_name(name) ⇒ Object

Find token by its name.



97
98
99
# File 'lib/tokens/active_record.rb', line 97

def find_token_by_name(name)
  self.tokens.find_by_name(name.to_s)
end

#remove_token(name) ⇒ Object

Remove token.

@user.remove_token(:activate)


105
106
107
108
109
# File 'lib/tokens/active_record.rb', line 105

def remove_token(name)
  return if new_record?
  token = find_token_by_name(name)
  token && token.destroy
end

#valid_token?(name, hash) ⇒ Boolean

Verify if given token is valid.

@user.valid_token?(:active, "abcdefg")

Returns:

  • (Boolean)


80
81
82
# File 'lib/tokens/active_record.rb', line 80

def valid_token?(name, hash)
  self.tokens.where(:name => name.to_s, :token => hash.to_s).first != nil
end