diff options
author | Luke Shumaker <shumakl@purdue.edu> | 2014-04-06 14:32:38 -0400 |
---|---|---|
committer | Luke Shumaker <shumakl@purdue.edu> | 2014-04-06 14:32:38 -0400 |
commit | cfaff7870d0348b25b3b4b2597950894ab25d989 (patch) | |
tree | 5efb02d4e8a7c602ba680dfe450a14a81597be55 /app/models/server.rb | |
parent | 2da3c10d18856c254457a3106eb8f1762b5077a9 (diff) |
implement editing the default user permissions
Diffstat (limited to 'app/models/server.rb')
-rw-r--r-- | app/models/server.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app/models/server.rb b/app/models/server.rb index 120f0fa..5ba7524 100644 --- a/app/models/server.rb +++ b/app/models/server.rb @@ -1,2 +1,38 @@ class Server < ActiveRecord::Base + def default_user_abilities + @abilities ||= User::Abilities.new(DefaultUser.new(self)) + end + def default_user_abilities=(new) + new.each do |k,v| + if v == "0" + v = false + end + default_user_abilities[k] = v + end + end + class DefaultUser + def initialize(server) + @server = server + end + def can?(action) + bit = User.permission_bits[action] + if bit.nil? + return false + else + return (@server.default_user_permissions & bit != 0) + end + end + def add_ability(action) + bit = User.permission_bits[action.to_sym] + unless bit.nil? + @server.default_user_permissions |= bit + end + end + def remove_ability(action) + bit = User.permission_bits[action.to_sym] + unless bit.nil? + @server.default_user_permissions &= ~ bit + end + end + end end |