module AppRail::Airtable::Authenticatable::ClassMethods

Public Instance Methods

create(email:, password:) click to toggle source
# File lib/app_rail/airtable/authenticatable.rb, line 15
def create(email:, password:)
  user = new("Email" => email, "Password Hash" => password_hash(password), "Access Token" => next_access_token)
  user.create
  user
end
create_session_as_json(email:, password:) click to toggle source
# File lib/app_rail/airtable/authenticatable.rb, line 21
def create_session_as_json(email:, password:)
  user = find_by_email_and_password(email, password)
  return nil unless user
  
  user["Access Token"] = next_access_token
  user.save
  user&.oauth_session
end
find_by_access_token(access_token) click to toggle source
# File lib/app_rail/airtable/authenticatable.rb, line 35
def find_by_access_token(access_token)
  all(filter: "{Access Token} = \"#{access_token}\"").first 
end
find_by_email_and_password(email, password) click to toggle source
# File lib/app_rail/airtable/authenticatable.rb, line 30
def find_by_email_and_password(email, password)
  user = all(filter: "{Email} = \"#{email}\"").first
  user&.valid_password?(password) ? user : nil
end
next_access_token() click to toggle source
# File lib/app_rail/airtable/authenticatable.rb, line 43
def next_access_token
  SecureRandom.hex
end
password_hash(password) click to toggle source
# File lib/app_rail/airtable/authenticatable.rb, line 39
def password_hash(password)
  BCrypt::Password.create(password)
end