Sha256: c1fd98ffaf9ebf4b9f1dece1e3987eb5ac4f78afee3c6301c7814b3cb844e6cd

Contents?: true

Size: 953 Bytes

Versions: 15

Compression:

Stored size: 953 Bytes

Contents

module Nyauth
  module PasswordDigestAbility
    extend ActiveSupport::Concern

    included do
      attr_accessor :password, :password_confirmation
      validates :password_digest, presence: true
      before_validation do
        set_password_salt if password.present?
        set_password_digest if password.present?
      end
    end

    def verify_password?(raw_password)
      password_digest == generate_password_digest(raw_password)
    end

    private

    def generate_password_digest(password)
      Nyauth.configuration.password_digest_stretches.times do
        password = Digest::SHA256.hexdigest("#{password}#{password_salt}")
      end
      password
    end

    def generate_password_salt
      "#{id}#{SecureRandom.hex(128)}"
    end

    def set_password_salt
      self.password_salt = generate_password_salt
    end

    def set_password_digest
      self.password_digest = generate_password_digest(password)
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
nyauth-0.6.1 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.6.0 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.5.0 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.4.0 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.3.0 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.8 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.7 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.6 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.5 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.4 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.3 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.2 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.1 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.2.0 app/models/concerns/nyauth/password_digest_ability.rb
nyauth-0.1.0 app/models/concerns/nyauth/password_digest_ability.rb