summaryrefslogtreecommitdiff
path: root/users/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'users/app/models')
-rw-r--r--users/app/models/.gitkeep0
-rw-r--r--users/app/models/unauthenticated_user.rb4
-rw-r--r--users/app/models/user.rb49
3 files changed, 53 insertions, 0 deletions
diff --git a/users/app/models/.gitkeep b/users/app/models/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/users/app/models/.gitkeep
diff --git a/users/app/models/unauthenticated_user.rb b/users/app/models/unauthenticated_user.rb
new file mode 100644
index 0000000..99a6874
--- /dev/null
+++ b/users/app/models/unauthenticated_user.rb
@@ -0,0 +1,4 @@
+# The nil object for the user class
+class UnauthenticatedUser < Object
+
+end
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