Sha256: fcb4ec02723eb705fdd171a65357751a456df9ac4a61db968aed80b1026df6b0

Contents?: true

Size: 1.36 KB

Versions: 25

Compression:

Stored size: 1.36 KB

Contents

# -*- encoding : utf-8 -*-

class Card
  # Singleton methods for account authentication and contextualization.
  #
  # Manages current user,
  # "as" user, and password verification.
  module Auth
    extend Permissions
    extend Proxy
    extend Setup
    extend Current
    extend Token

    class << self
      # authenticate a user by their login name and unencrypted password.
      # @param email [String]
      # @param password [String]
      # @return [+*account card, nil]
      def authenticate email, password
        account = Auth.find_account_by_email email
        case
        when !account                                 then nil
        when !account.active?                         then nil
        when Card.config.no_authentication            then account
        when password_valid?(account, password.strip) then account
        end
      end

      # check whether password is correct for account card
      # @param account [+*account card]
      # @param password [String]
      def password_valid? account, password
        account.password == encrypt(password, account.salt)
      end

      # encrypt password string with the given salt.
      # @return [SHA1 String]
      def encrypt password, salt
        Digest::SHA1.hexdigest "#{salt}--#{password}--"
      end

      def serialize
        { as_id: as_id, current_id: current_id }
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
card-1.108.1 lib/card/auth.rb
card-1.108.0 lib/card/auth.rb
card-1.107.0 lib/card/auth.rb
card-1.106.0 lib/card/auth.rb
card-1.105.6 lib/card/auth.rb
card-1.105.5 lib/card/auth.rb
card-1.105.4 lib/card/auth.rb
card-1.105.3 lib/card/auth.rb
card-1.105.2.pre1 lib/card/auth.rb
card-1.105.2 lib/card/auth.rb
card-1.105.1 lib/card/auth.rb
card-1.105.0 lib/card/auth.rb
card-1.104.2 lib/card/auth.rb
card-1.104.1 lib/card/auth.rb
card-1.104.0 lib/card/auth.rb
card-1.103.4 lib/card/auth.rb
card-1.103.3 lib/card/auth.rb
card-1.103.2 lib/card/auth.rb
card-1.103.1 lib/card/auth.rb
card-1.103.0 lib/card/auth.rb