summaryrefslogtreecommitdiff
path: root/users/app/models/user.rb
diff options
context:
space:
mode:
Diffstat (limited to 'users/app/models/user.rb')
-rw-r--r--users/app/models/user.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
new file mode 100644
index 0000000..fa64f42
--- /dev/null
+++ b/users/app/models/user.rb
@@ -0,0 +1,49 @@
+class User < CouchRest::Model::Base
+
+ include SRP::Authentication
+
+ property :login, String, :accessible => true
+ property :email, String, :accessible => true
+ property :password_verifier, String, :accessible => true
+ property :password_salt, String, :accessible => true
+
+ validates :login, :password_salt, :password_verifier, :presence => true
+ validates :login, :uniqueness => true
+
+ timestamps!
+
+ design do
+ view :by_login
+ end
+
+ class << self
+ def find_by_param(login)
+ return find_by_login(login) || raise(RECORD_NOT_FOUND)
+ end
+
+ # valid set of attributes for testing
+ def valid_attributes_hash
+ { :login => "me",
+ :password_verifier => "1234",
+ :password_salt => "4321" }
+ end
+
+ end
+
+ def to_param
+ self.login
+ end
+
+ def to_json(options={})
+ super(options.merge(:only => ['login', 'password_salt']))
+ end
+
+ def salt
+ password_salt.hex
+ end
+
+ def verifier
+ password_verifier.hex
+ end
+
+end