Module: Card::Auth

Extended by:
Current, Permissions, Proxy, Setup, Token
Defined in:
lib/card/auth.rb,
lib/card/auth/proxy.rb,
lib/card/auth/setup.rb,
lib/card/auth/token.rb,
lib/card/auth/current.rb,
lib/card/auth/permissions.rb

Overview

Singleton methods for account authentication and contextualization.

Manages current user, “as” user, and password verification.

Defined Under Namespace

Modules: Current, Permissions, Proxy, Setup, Token

Constant Summary

Constants included from Setup

Setup::NEEDS_SETUP

Constants included from Token

Token::SECRET_KEY

Class Method Summary collapse

Methods included from Permissions

admin?, always_ok?, createable_types, update_always_cache

Methods included from Proxy

as, as_bot, as_card, as_id, with

Methods included from Setup

instant_account_activation, needs_setup?, simulate_setup!

Methods included from Current

current_card, current_id, current_id=, current_roles, find_account_by_email, reset, session, session_user_key, signed_in?, signin, signin_with, signin_with_session

Methods included from Token

decode, encode, expiration, signin_with_token, validate!

Class Method Details

.authenticate(email, password) ⇒ +*account card?

authenticate a user by their login name and unencrypted password.

Parameters:

  • email (String)
  • password (String)

Returns:

  • (+*account card, nil)


20
21
22
23
24
25
# File 'lib/card/auth.rb', line 20

def authenticate email, password
   = Auth. email
  return nil unless &.active?

   if not_required? || password_valid?(, password.strip)
end

.encrypt(password, salt) ⇒ SHA1 String

encrypt password string with the given salt.

Returns:

  • (SHA1 String)


36
37
38
# File 'lib/card/auth.rb', line 36

def encrypt password, salt
  Digest::SHA1.hexdigest "#{salt}--#{password}--"
end

.not_required?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/card/auth.rb', line 44

def not_required?
  Card.config.no_authentication
end

.password_valid?(account, password) ⇒ Boolean

check whether password is correct for account card

Parameters:

  • account (+*account card)
  • password (String)

Returns:

  • (Boolean)


30
31
32
# File 'lib/card/auth.rb', line 30

def password_valid? , password
  .password == encrypt(password, .salt)
end

.serializeObject



40
41
42
# File 'lib/card/auth.rb', line 40

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