Sha256: 011de1e9046561fdadc6ee3e6d50c40f6b6c8a1b4c5d3bed3ce6a239f3436de4

Contents?: true

Size: 653 Bytes

Versions: 1

Compression:

Stored size: 653 Bytes

Contents

# frozen_string_literal: true

module Aikotoba
  class Account::Password
    LENGTH_RENGE = Aikotoba.password_length_range

    def initialize(
      value:,
      pepper: Aikotoba.password_pepper,
      algorithm_class: Argon2
    )
      @value = value
      @pepper = pepper
      @algorithm = algorithm_class.new(password: password_with_pepper(@value))
    end

    attr_reader :value

    def match?(digest:)
      @algorithm.verify_password?(digest)
    end

    def digest
      return "" if value.blank?
      @algorithm.generate_hash
    end

    private

    def password_with_pepper(password)
      "#{password}-#{@pepper}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aikotoba-0.1.1 app/models/aikotoba/account/password.rb