summaryrefslogtreecommitdiff
path: root/users/app/models/user.rb
diff options
context:
space:
mode:
authorazul <azul@riseup.net>2013-12-09 10:14:17 -0800
committerazul <azul@riseup.net>2013-12-09 10:14:17 -0800
commit0f2e1316894cdffac47448b6ddbf2cfaf5f93a55 (patch)
treeae2577c3584e66ffa2937ad9807e32cc6ff49db3 /users/app/models/user.rb
parente7e5dac36127a36cac9ed35054767d04b2e5ae17 (diff)
parent6ebf095bc553345a3e0b8c48cadc3e1440c59ca5 (diff)
Merge pull request #119 from jessib/feature/service_level
Feature/service level
Diffstat (limited to 'users/app/models/user.rb')
-rw-r--r--users/app/models/user.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index a14fcb5..720f5a9 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -9,6 +9,12 @@ class User < CouchRest::Model::Base
property :enabled, TrueClass, :default => true
+ # these will be null by default but we shouldn't ever pull them directly, but only via the methods that will return the full ServiceLevel
+ property :desired_service_level_code, Integer, :accessible => true
+ property :effective_service_level_code, Integer, :accessible => true
+
+ before_save :update_effective_service_level
+
validates :login, :password_salt, :password_verifier,
:presence => true
@@ -94,6 +100,16 @@ class User < CouchRest::Model::Base
@identity = Identity.for(self)
end
+ def desired_service_level
+ code = self.desired_service_level_code || APP_CONFIG[:default_service_level]
+ ServiceLevel.new({id: code})
+ end
+
+ def effective_service_level
+ code = self.effective_service_level_code || self.desired_service_level.id
+ ServiceLevel.new({id: code})
+ end
+
protected
##
@@ -116,4 +132,12 @@ class User < CouchRest::Model::Base
def serverside?
true
end
+
+ def update_effective_service_level
+ # TODO: Is this always the case? Might there be a situation where the admin has set the effective service level and we don't want it changed to match the desired one?
+ if self.desired_service_level_code_changed?
+ self.effective_service_level_code = self.desired_service_level_code
+ end
+ end
+
end