Module: OnetimeToken::HasToken

Defined in:
lib/onetime_token/has_token.rb

Instance Method Summary collapse

Instance Method Details

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



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/onetime_token/has_token.rb', line 3

def has_onetime_token(name, options={})
  define_singleton_method :"find_by_#{name}_token" do |secret|
    token = Token.new(self, name, secret)
    if stored_model_id = token.model_id
      find_by(id: stored_model_id)
    end
  end

  define_method :"generate_#{name}_token" do |_options={}|
    Token.generate_for self, name, _options
  end

  define_method :"#{name}_token_properties" do |secret|
    token = Token.new(self.class, name, secret)
    token.properties
  end

  define_method(:"verify_#{name}_token") do |secret|
    token = Token.new(self.class, name, secret)
    if id && id == token.model_id
      token.expire
      true
    else
      false
    end
  end
end