Sha256: d22b37984ee5634569df582aebd85a59698cd6dbb8ae4b34c62f5e627fca33f7

Contents?: true

Size: 1.44 KB

Versions: 29

Compression:

Stored size: 1.44 KB

Contents

# -*- encoding : utf-8 -*-
require_dependency "card/auth/permissions"
require_dependency "card/auth/proxy"
require_dependency "card/auth/setup"

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

    @as_card = @as_id = @current_id = @current = nil

    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
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
card-1.96.8 lib/card/auth.rb
card-1.96.7 lib/card/auth.rb
card-1.96.6 lib/card/auth.rb
card-1.96.5 lib/card/auth.rb
card-1.96.4 lib/card/auth.rb
card-1.96.3 lib/card/auth.rb
card-1.96.2 lib/card/auth.rb
card-1.96.1 lib/card/auth.rb
card-1.96.0 lib/card/auth.rb
card-1.95.3 lib/card/auth.rb
card-1.95.2 lib/card/auth.rb
card-1.95.1 lib/card/auth.rb
card-1.95.0 lib/card/auth.rb
card-1.94.1 lib/card/auth.rb
card-1.94.0 lib/card/auth.rb
card-1.93.13 lib/card/auth.rb
card-1.93.12 lib/card/auth.rb
card-1.93.11 lib/card/auth.rb
card-1.93.10 lib/card/auth.rb
card-1.93.9 lib/card/auth.rb