Sha256: 02ed516651c740fa2655918d96f80870951dd55553d7a90d21aa8c9f80691e2f

Contents?: true

Size: 1020 Bytes

Versions: 6

Compression:

Stored size: 1020 Bytes

Contents

require 'digest/sha1'

module Clearance
  module PasswordStrategies
    module SHA1
      extend ActiveSupport::Concern

      # Am I authenticated with given password?
      #
      # @param [String] plain-text password
      # @return [true, false]
      # @example
      #   user.authenticated?('password')
      def authenticated?(password)
        encrypted_password == encrypt(password)
      end

      protected

      def encrypt_password
        initialize_salt_if_necessary
        if password.present?
          self.encrypted_password = encrypt(password)
        end
      end

      def generate_hash(string)
        if RUBY_VERSION >= '1.9'
          Digest::SHA1.hexdigest(string).encode('UTF-8')
        else
          Digest::SHA1.hexdigest(string)
        end
      end

      def encrypt(string)
        generate_hash("--#{salt}--#{string}--")
      end

      def initialize_salt_if_necessary
        if salt.blank?
          self.salt = generate_random_code
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
clearance-0.16.1 lib/clearance/password_strategies/sha1.rb
clearance-0.16.0 lib/clearance/password_strategies/sha1.rb
clearance-0.15.0 lib/clearance/password_strategies/sha1.rb
clearance-0.14.0 lib/clearance/password_strategies/sha1.rb
clearance-0.13.2 lib/clearance/password_strategies/sha1.rb
clearance-0.13.0 lib/clearance/password_strategies/sha1.rb