Module: IprogOtpGenerator::OtpCode

Defined in:
lib/iprog_otp_generator/otp_code.rb

Instance Method Summary collapse

Instance Method Details

#clear_otp_codeObject



26
27
28
29
30
31
32
# File 'lib/iprog_otp_generator/otp_code.rb', line 26

def clear_otp_code
 self.otp_code            = nil 
 self.otp_code_expires_at = nil
 self.otp_code_confirmed  = false

 save(validate: false)
end

#generate_otp_code(length = 8) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/iprog_otp_generator/otp_code.rb', line 5

def generate_otp_code(length = 8)
 begin
  self.otp_code = Array.new(length) { rand(0..9) }.join
 end while self.class.exists?(otp_code: otp_code)

 self.otp_code_expires_at = Time.now + 5.minutes
 self.otp_code_confirmed  = false
 
 save(validate: false)
end

#valid_otp_code?(code = nil) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
19
20
21
22
23
24
# File 'lib/iprog_otp_generator/otp_code.rb', line 16

def valid_otp_code?(code = nil)
 return false unless otp_code && otp_code_expires_at

 if otp_code == code && otp_code_expires_at > Time.now
  update_columns otp_code_confirmed: true
 end

 otp_code_confirmed
end