Class: DBAuth
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
        show all
      
      
 
    
  
  
    
      - Extended by:
 
      - JSONModel
 
      
    
  
    
      - Includes:
 
      - BCrypt
 
      
    
  
  
  
    - Defined in:
 
    - backend/app/model/dbauth.rb
 
  
  
    
      Class Method Summary
      (collapse)
    
    
  
  
  
  
  
  
  
  
  
  Methods included from JSONModel
  JSONModel, JSONModel, add_error_handler, all, allow_unmapped_enum_value, backend_url, client_mode?, custom_validations, destroy_model, enum_default_value, enum_values, handle_error, init, load_schema, models, models, parse_jsonmodel_ref, parse_reference, repository, repository_for, schema_src, set_repository, strict_mode, strict_mode?, with_repository
  
  
    Class Method Details
    
      
  
  
    + (Object) authenticate(username, password) 
  
  
  
  
    
      
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 
     | 
    
      # File 'backend/app/model/dbauth.rb', line 29
def self.authenticate(username, password)
    username = username.downcase
    DB.open do |db|
      pwhash = db[:auth_db].filter(:username => username).get(:pwhash)
      if pwhash and (Password.new(pwhash) == password)
       user = User.find(:username => username)
       JSONModel(:user).from_hash(
        :username => username,
        :name => user.name,
        :email => user.email,
        :first_name => user.first_name,
        :last_name => user.last_name,
        :telephone => user.telephone,
        :title => user.title,
        :department => user.department,
        :additional_contact => user.additional_contact
       )
    else
      nil
    end
  end
end
     | 
  
 
    
      
  
  
    + (Object) delete_user(username) 
  
  
  
  
    
      
69
70
71
72
73 
     | 
    
      # File 'backend/app/model/dbauth.rb', line 69
def self.delete_user(username)
  DB.open do |db|
    db[:auth_db].filter(:username => username).delete
  end
end
     | 
  
 
    
      
  
  
    + (Object) matching_usernames(query) 
  
  
  
  
    
      
55
56
57
58
59
60
61
62
63
64
65
66 
     | 
    
      # File 'backend/app/model/dbauth.rb', line 55
def self.matching_usernames(query)
  DB.open do |db|
    query = query.gsub(/[%]/, '').downcase
    db[:auth_db].left_outer_join(:user, :username => :username).
                 filter(Sequel.~(:is_system_user => 1)).
                 filter(Sequel.like(Sequel.function(:lower, :auth_db__username),
                                    "#{query}%")).
      select(:auth_db__username).
      limit(AppConfig[:max_usernames_per_source].to_i).
      map {|row| row[:username]}
  end
end
     | 
  
 
    
      
  
  
    + (Object) set_password(username, password) 
  
  
  
  
    
      
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 
     | 
    
      # File 'backend/app/model/dbauth.rb', line 8
def self.set_password(username, password)
  pwhash = Password.create(password)
  username = username.downcase
  DB.open do |db|
    DB.attempt {
      db[:auth_db].insert(:username => username,
                          :pwhash => pwhash,
                          :create_time => Time.now,
                          :system_mtime => Time.now)
    }.and_if_constraint_fails {
      db[:auth_db].
      filter(:username => username).
      update(:username => username,
             :pwhash => pwhash,
             :system_mtime => Time.now)
    }
  end
end
     |