Class: Trackington::UserRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/trackington/app/users.rb

Constant Summary collapse

SALT_LENGHT =
50
SESSION_KEY_LENGTH =
50

Instance Method Summary collapse

Instance Method Details

#countObject



54
55
56
# File 'lib/trackington/app/users.rb', line 54

def count
  Models::User.count
end

#login(email, password) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/trackington/app/users.rb', line 29

def (email, password)
  user = Models::User.where(email: email).first

  fail "Email/password don't match" if user.nil?

  credential = Models::Credential.where(user_id: user.id).first

  check_credentials(credential, password)

  credential.session_key = generate_string SESSION_KEY_LENGTH

  credential.save

  credential.session_key
end

#logout(session_key) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/trackington/app/users.rb', line 45

def logout(session_key)
  credential = Models::Credential.where(session_key: session_key).first

  return if credential.nil?

  credential.session_key = nil
  credential.save
end

#register(email, password) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/trackington/app/users.rb', line 9

def register(email, password)
  check_existing email

  user = Models::User.new
  user.email = email
  user.save

  credential = create_credentials(user.id, password)

  credential.session_key
end

#search(query) ⇒ Object



58
59
60
61
62
# File 'lib/trackington/app/users.rb', line 58

def search(query)
  Models::User.where('email like ?', "%#{query}%").map do |user|
    User.new(user.id, user.email)
  end
end

#user(session_key) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/trackington/app/users.rb', line 21

def user(session_key)
  db_credential = Models::Credential.where(session_key: session_key).first

  db_user = Models::User.find(db_credential.user_id)

  User.new(db_user.id, db_user.email)
end