memorizor/memorizor-api

View on GitHub
app/models/verification_token.rb

Summary

Maintainability
A
0 mins
Test Coverage
class VerificationToken
  # Token used for verifiing a email address
  require 'securerandom'

  SECONDS_UNTIL_EXPIRATION = 604_800 # One week

  def self.generate(user_id)
    token = SecureRandom.urlsafe_base64 30
    $redis.set('verify.' << token, user_id)
    $redis.expire('verify.' << token, SECONDS_UNTIL_EXPIRATION)
    token
  end

  def self.verify(token)
    if $redis.exists('verify.' << token)
      User.find_by_id($redis.get('verify.' << token)).update!(verified: true)
      $redis.del('verify.' << token)
    end
  end
end