module Card::Auth::Current

methods for setting current account

Public Instance Methods

current()
Alias for: current_card
current_card() click to toggle source

current accounted card (must have +*account) @return [Card]

# File lib/card/auth/current.rb, line 21
def current_card
  return @current_card if @current_card&.id == current_id

  @current_card = Card[current_id]
end
Also aliased as: current
current_id() click to toggle source

id of current user card. @return [Integer]

# File lib/card/auth/current.rb, line 7
def current_id
  @current_id ||= Card::AnonymousID
end
current_id=(card_id) click to toggle source

set the id of the current user. @return [Integer]

# File lib/card/auth/current.rb, line 13
def current_id= card_id
  reset
  card_id = card_id.to_i if card_id.present?
  @current_id = card_id
end
current_roles() click to toggle source
# File lib/card/auth/current.rb, line 28
def current_roles
  return [] unless signed_in?

  @current_roles ||= [:anyone_signed_in.cardname] +
                     Set::Self::Role.role_ids(current_id).map(&:cardname)
end
find_account_by_email(email) click to toggle source

find +*account card by +*email card @param email [String] @return [+*account card, nil]

# File lib/card/auth/current.rb, line 72
def find_account_by_email email
  find_account_by :email, email.strip.downcase
end
reset() click to toggle source
# File lib/card/auth/current.rb, line 76
def reset
  @as_id = @as_card = @current_id = @current_card = @current_roles = nil
end
session() click to toggle source

get session object from Env return [Session]

# File lib/card/auth/current.rb, line 65
def session
  Card::Env.session
end
session_user_key() click to toggle source
# File lib/card/auth/current.rb, line 80
def session_user_key
  "user_#{Cardio.database.underscore}".to_sym
end
signed_in?() click to toggle source

current user is not anonymous @return [true/false]

# File lib/card/auth/current.rb, line 43
def signed_in?
  current_id != Card::AnonymousID
end
signin(cardish) click to toggle source

set current user in process and session

# File lib/card/auth/current.rb, line 36
def signin cardish
  session[session_user_key] =
    self.current_id = Card.id(cardish) || Card::AnonymousID
end
signin_with(opts={}) click to toggle source

set current from token, api_key, or session

# File lib/card/auth/current.rb, line 48
def signin_with opts={}
  if opts[:token]
    signin_with_token opts[:token]
  else
    signin_with_session
  end
end
signin_with_session() click to toggle source

get :user id from session and set Auth.current_id

# File lib/card/auth/current.rb, line 57
def signin_with_session
  card_id = session[session_user_key]
  card_id = nil unless Card.exists? card_id
  signin card_id
end

Private Instance Methods

find_account_by(fieldcode, value) click to toggle source

general pattern for finding +*account card based on field cards @param fieldcode [Symbol] code of account field @param value [String] content of field @return [+*account card, nil]

# File lib/card/auth/current.rb, line 90
def find_account_by fieldcode, value
  Auth.as_bot do
    Card.search({ right_id: Card::AccountID,
                  right_plus: [Card::Codename.id(fieldcode), { content: value }] },
                "find +:account with +#{fieldcode} (#{value})").first
  end
end