summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <shumakl@purdue.edu>2014-04-06 14:32:38 -0400
committerLuke Shumaker <shumakl@purdue.edu>2014-04-06 14:32:38 -0400
commitcfaff7870d0348b25b3b4b2597950894ab25d989 (patch)
tree5efb02d4e8a7c602ba680dfe450a14a81597be55
parent2da3c10d18856c254457a3106eb8f1762b5077a9 (diff)
implement editing the default user permissions
-rw-r--r--app/controllers/servers_controller.rb2
-rw-r--r--app/controllers/users_controller.rb2
-rw-r--r--app/models/server.rb36
-rw-r--r--app/views/servers/_form.html.erb23
-rw-r--r--app/views/servers/edit.html.erb2
-rw-r--r--app/views/servers/show.html.erb2
6 files changed, 50 insertions, 17 deletions
diff --git a/app/controllers/servers_controller.rb b/app/controllers/servers_controller.rb
index e3850b8..83a9f31 100644
--- a/app/controllers/servers_controller.rb
+++ b/app/controllers/servers_controller.rb
@@ -31,6 +31,6 @@ class ServersController < ApplicationController
# Never trust parameters from the scary internet, only allow the white list through.
def server_params
- params.require(:server).permit(:default_user_permissions)
+ params.require(:server).permit(:default_user_permissions, :default_user_abilities => User.permission_bits.keys)
end
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index dd66c18..637480f 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -33,7 +33,7 @@ class UsersController < ApplicationController
return
end
- @user.permissions = 0
+ @user.permissions = Server.first.default_user_permissions
respond_to do |format|
if @user.save
sign_in @user
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
diff --git a/app/views/servers/_form.html.erb b/app/views/servers/_form.html.erb
index 6211f9a..1afde11 100644
--- a/app/views/servers/_form.html.erb
+++ b/app/views/servers/_form.html.erb
@@ -1,20 +1,17 @@
<%= form_for(@server) do |f| %>
- <% if @server.errors.any? %>
- <div id="error_explanation">
- <h2><%= pluralize(@server.errors.count, "error") %> prohibited this server from being saved:</h2>
+ <%= render "common/error_messages", :target => @server %>
- <ul>
- <% @server.errors.full_messages.each do |msg| %>
- <li><%= msg %></li>
+ <fieldset>
+ <legend>Default permissions for new users</legend>
+ <ul>
+ <%= fields_for "server[default_user_abilities]", @server.default_user_abilities do |a| %>
+ <% @server.default_user_abilities.keys.each do |ability| %>
+ <li><label><%= a.check_box(ability) %> <%= ability.to_s.humanize %></label></li>
<% end %>
- </ul>
- </div>
- <% end %>
+ <% end %>
+ </ul>
+ </fieldset>
- <div class="field">
- <%= f.label :default_user_permissions %><br>
- <%= f.number_field :default_user_permissions %>
- </div>
<div class="actions">
<%= f.submit %>
</div>
diff --git a/app/views/servers/edit.html.erb b/app/views/servers/edit.html.erb
index 99f7faa..d37864f 100644
--- a/app/views/servers/edit.html.erb
+++ b/app/views/servers/edit.html.erb
@@ -2,4 +2,4 @@
<%= render 'form' %>
-<%= link_to 'Show', @server %>
+<%= link_to server_path %>
diff --git a/app/views/servers/show.html.erb b/app/views/servers/show.html.erb
index 875be5d..54aaf66 100644
--- a/app/views/servers/show.html.erb
+++ b/app/views/servers/show.html.erb
@@ -3,4 +3,4 @@
<%= @server.default_user_permissions %>
</p>
-<%= link_to 'Edit', edit_server_path(@server) %>
+<%= link_to 'Edit', edit_server_path %>