ffbdf6283bf9e53c43565653040fbb33527790b1
[ruby_srp.git] / example / models / user.rb
1 class User
2
3   def self.current
4     # p "getting #{@current ? @current.login : 'nil'}"
5     @current ||= User.new
6   end
7
8   attr_accessor :login
9   attr_accessor :salt
10   attr_accessor :verifier
11   attr_accessor :active
12   attr_accessor :srp
13
14   def signup!(params)
15     self.login = params.delete('login')
16     self.salt = params.delete('salt').to_i
17     self.verifier = params.delete('verifier').to_i
18     self.active = false
19   end
20
21   def initialize_auth(params)
22     self.srp = SRP::Server.new(self.salt, self.verifier)
23     bb, u = self.srp.initialize_auth(params.delete('A').to_i)
24     return {:B => bb, :u => u}
25   end
26
27   def authenticate(params)
28     if m2 = self.srp.authenticate(params.delete('aa').to_i, params.delete('M').to_i)
29       return {:M2 => m2}
30     else
31       return {:error => "Access Denied"}
32     end
33   end
34
35
36   def login!(params)
37     self.active = valid_login?(params[:login], params[:password])
38   end
39
40   def valid_login?(login, password)
41     (self.login == login) and (self.password == password)
42   end
43 end