class CowAuth::User

Public Instance Methods

authenticate_with_password(password) click to toggle source
# File lib/cow_auth/user.rb, line 15
def authenticate_with_password(password)
  return false if self.encrypted_password.blank?
  if SCrypt::Password.new(self.encrypted_password) == password
    self.update(sign_in_count: self.sign_in_count + 1)
    return true
  end
  return false
end
authenticate_with_token(auth_token) click to toggle source
# File lib/cow_auth/user.rb, line 24
def authenticate_with_token(auth_token)
  if self.auth_token.present? &&
      self.expires_at.present? &&
      self.auth_token == auth_token &&
      self.expires_at > Time.zone.now
    return true
  end
  return false
end
create_auth_token() click to toggle source
# File lib/cow_auth/user.rb, line 34
def create_auth_token
  self.update(
    auth_token: self.token_valid? ? self.auth_token : self.generate_auth_token,
    expires_at: self.generate_token_expires_at
  )
  return true
end
destroy_auth_token() click to toggle source
# File lib/cow_auth/user.rb, line 42
def destroy_auth_token
  self.update(
    auth_token: nil,
    expires_at: nil
  )
  return true
end
password=(new_password) click to toggle source
# File lib/cow_auth/user.rb, line 50
def password=(new_password)
  return false if new_password.blank?
  salt = SCrypt::Engine.generate_salt
  self.encrypted_password = SCrypt::Engine.hash_secret(new_password, salt)
  return true
end

Protected Instance Methods

generate_auth_token() click to toggle source
# File lib/cow_auth/user.rb, line 59
def generate_auth_token
  return SecureRandom.hex(64)
end
generate_token_expires_at() click to toggle source
# File lib/cow_auth/user.rb, line 63
def generate_token_expires_at
  return 1.month.from_now
end
token_valid?() click to toggle source
# File lib/cow_auth/user.rb, line 67
def token_valid?
  return self.auth_token.present? &&
      self.expires_at.present? &&
      self.expires_at > Time.zone.now
end

Private Instance Methods

generate_sid_if_necessary() click to toggle source
# File lib/cow_auth/user.rb, line 75
def generate_sid_if_necessary
  self.sid ||= "C#{SecureRandom.hex(16)}"
  return true
end