Sha256: 4b41e00c7c5a0bc13e84c8c975bacc2afbf8fdfa9201a0a1a4a1c45336db6015
Contents?: true
Size: 621 Bytes
Versions: 1
Compression:
Stored size: 621 Bytes
Contents
# frozen_string_literal: true module PagesCore module HasOtp extend ActiveSupport::Concern included do validates :otp_secret, presence: true, if: :otp_enabled? end def recovery_codes=(codes) self.hashed_recovery_codes = codes.map do |c| BCrypt::Password.create(c, cost: 8) end end def use_recovery_code!(code) valid_hashes = hashed_recovery_codes.select do |c| BCrypt::Password.new(c) == code end return false unless valid_hashes.any? update(hashed_recovery_codes: hashed_recovery_codes - valid_hashes) true end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pages_core-3.14.0 | app/models/concerns/pages_core/has_otp.rb |