---
src/app/controllers/application_controller.rb | 18 +++++++
src/app/controllers/deployments_controller.rb | 1 +
src/app/controllers/permissions_controller.rb | 55 ++++++++++------------
src/app/controllers/pools_controller.rb | 16 +------
src/app/controllers/providers_controller.rb | 1 +
src/app/views/deployments/_permissions.html.haml | 3 +-
src/app/views/permissions/_form.html.haml | 8 ++-
src/app/views/permissions/_new.html.haml | 2 +-
src/app/views/permissions/_permissions.html.haml | 3 +-
src/app/views/providers/_permissions.html.haml | 1 +
10 files changed, 57 insertions(+), 51 deletions(-)
diff --git a/src/app/controllers/application_controller.rb
b/src/app/controllers/application_controller.rb
index 3dbbb05..300a56d 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -250,6 +250,24 @@ class ApplicationController < ActionController::Base
%w[asc desc].include?(params[:order_dir]) ? params[:order_dir] : "asc"
end
+ def add_permissions_tab(perm_obj, path_prefix = "")
+ @path_prefix = path_prefix
+ if "permissions" == params[:details_tab]
+ require_privilege(Privilege::PERM_VIEW, perm_obj)
+ @permission_object = perm_obj
+ end
+ if perm_obj.has_privilege(current_user, Privilege::PERM_VIEW)
+ @roles = Role.find_all_by_scope((a)permission_object.class.name)
+ if @tabs
+ @tabs << {:name => 'Users',
+ :view => 'permissions',
+ :id => 'permissions',
+ :count => perm_obj.permissions.count}
+ end
+ end
+ set_permissions_header
+ end
+
def set_permissions_header
@permission_list_header = [
{ :name => '', :sortable => false },
diff --git a/src/app/controllers/deployments_controller.rb
b/src/app/controllers/deployments_controller.rb
index 4b10b6f..253a67c 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -143,6 +143,7 @@ class DeploymentsController < ApplicationController
{:name => 'Properties', :view => 'properties', :id
=> 'properties'}
#{:name => 'Permissions', :view => 'permissions', :id
=> 'permissions'}
]
+ add_permissions_tab(@deployment)
details_tab_name = params[:details_tab].blank? ? 'instances' :
params[:details_tab]
@details_tab = @tabs.find {|t| t[:id] == details_tab_name} ||
@tabs.first[:name].downcase
@deployment_properties = @deployment.properties
diff --git a/src/app/controllers/permissions_controller.rb
b/src/app/controllers/permissions_controller.rb
index b2eaa7f..3b56420 100644
--- a/src/app/controllers/permissions_controller.rb
+++ b/src/app/controllers/permissions_controller.rb
@@ -21,10 +21,7 @@ class PermissionsController < ApplicationController
before_filter :set_permissions_header
def index
- obj_type = params[:permission_object_type]
- id = params[:permission_object_id]
- @permission_object = obj_type.constantize.find(id) if obj_type and id
- raise RuntimeError, "invalid permission object" if @permission_object.nil?
+ set_permission_object(Privilege::PERM_VIEW)
respond_to do |format|
format.html
format.json { render :json => @permission_object.as_json }
@@ -33,10 +30,7 @@ class PermissionsController < ApplicationController
end
def new
- obj_type = params[:permission_object_type]
- id = params[:permission_object_id]
- @permission_object = obj_type.constantize.find(id) if obj_type and id
- require_privilege(Privilege::PERM_SET, @permission_object)
+ set_permission_object
@users = User.all
@roles = Role.find_all_by_scope((a)permission_object.class.name)
load_headers
@@ -48,10 +42,7 @@ class PermissionsController < ApplicationController
end
def create
- obj_type = params[:permission_object_type]
- id = params[:permission_object_id]
- @permission_object = obj_type.constantize.find(id) if obj_type and id
- require_privilege(Privilege::PERM_SET, @permission_object)
+ set_permission_object
added=[]
not_added=[]
params[:user_role_selected].each do |user_role|
@@ -77,9 +68,10 @@ class PermissionsController < ApplicationController
flash[:error] = "No users selected"
end
respond_to do |format|
- format.html { redirect_to polymorphic_path(@permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to send("#{@path_prefix}polymorphic_path",
+ @permission_object,
+ :details_tab => :permissions,
+ :only_tab => true) }
format.js { render :partial => 'index',
:permission_object_type => @permission_object.class.name,
:permission_object_id => @permission_object.id }
@@ -87,10 +79,7 @@ class PermissionsController < ApplicationController
end
def multi_update
- obj_type = params[:permission_object_type]
- id = params[:permission_object_id]
- @permission_object = obj_type.constantize.find(id) if obj_type and id
- require_privilege(Privilege::PERM_SET, @permission_object)
+ set_permission_object
modified=[]
not_modified=[]
params[:permission_role_selected].each do |permission_role|
@@ -119,9 +108,10 @@ class PermissionsController < ApplicationController
flash[:error] = "No users selected"
end
respond_to do |format|
- format.html { redirect_to polymorphic_path(@permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to send("#{@path_prefix}polymorphic_path",
+ @permission_object,
+ :details_tab => :permissions,
+ :only_tab => true) }
format.js { render :partial => 'index',
:permission_object_type => @permission_object.class.name,
:permission_object_id => @permission_object.id }
@@ -129,11 +119,7 @@ class PermissionsController < ApplicationController
end
def multi_destroy
- obj_type = params[:permission_object_type]
- id = params[:permission_object_id]
- @permission_object = obj_type.constantize.find(id) if obj_type and id
- raise RuntimeError, "invalid permission object" if @permission_object.nil?
- require_privilege(Privilege::PERM_SET, @permission_object)
+ set_permission_object
deleted=[]
not_deleted=[]
@@ -152,9 +138,10 @@ class PermissionsController < ApplicationController
flash[:error] = "Could not delete these Permission Grants:
#{not_deleted.join(', ')}"
end
respond_to do |format|
- format.html { redirect_to polymorphic_path(@permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to send("#{@path_prefix}polymorphic_path",
+ @permission_object,
+ :details_tab => :permissions,
+ :only_tab => true) }
format.js { render :partial => 'index',
:permission_object_type => @permission_object.class.name,
:permission_object_id => @permission_object.id }
@@ -190,4 +177,12 @@ class PermissionsController < ApplicationController
]
end
+ def set_permission_object (required_role=Privilege::PERM_SET)
+ obj_type = params[:permission_object_type]
+ id = params[:permission_object_id]
+ @path_prefix = params[:path_prefix]
+ @permission_object = obj_type.constantize.find(id) if obj_type and id
+ raise RuntimeError, "invalid permission object" if @permission_object.nil?
+ require_privilege(required_role, @permission_object)
+ end
end
diff --git a/src/app/controllers/pools_controller.rb
b/src/app/controllers/pools_controller.rb
index 8f725a4..573d6ca 100644
--- a/src/app/controllers/pools_controller.rb
+++ b/src/app/controllers/pools_controller.rb
@@ -20,7 +20,6 @@ class PoolsController < ApplicationController
before_filter :require_user
before_filter :set_params_and_header, :only => [:index, :show]
before_filter :load_pools, :only => [:show]
- before_filter :set_permissions_header, :only => [:show]
viewstate :index do |default|
default.merge!({
@@ -87,7 +86,7 @@ class PoolsController < ApplicationController
elsif params[:details_tab] == 'history'
@view = filter_view? ? 'history_filter' : 'history_pretty'
end
- #TODO add links to real data for history,properties,permissions
+ #TODO add links to real data for history,properties
@tabs = [{:name => 'Deployments', :view => @view, :id =>
'deployments', :count => @pool.deployments.count},
#{:name => 'History', :view => @view, :id =>
'history'},
{:name => 'Properties', :view => 'properties',
:id => 'properties'},
@@ -96,18 +95,7 @@ class PoolsController < ApplicationController
if "images" == params[:details_tab]
@map = @pool.provider_image_map
end
-
- if "permissions" == params[:details_tab]
- require_privilege(Privilege::PERM_VIEW, @pool)
- @permission_object = @pool
- end
- if @pool.has_privilege(current_user, Privilege::PERM_VIEW)
- @roles = Role.find_all_by_scope((a)permission_object.class.name)
- @tabs << {:name => 'Users',
- :view => 'permissions',
- :id => 'permissions',
- :count => @pool.permissions.count}
- end
+ add_permissions_tab(@pool)
details_tab_name = params[:details_tab].blank? ? 'deployments' :
params[:details_tab]
@details_tab = @tabs.find {|t| t[:id] == details_tab_name} ||
@tabs.first[:name].downcase
@deployments = @pool.deployments if @details_tab[:id] == 'deployments'
diff --git a/src/app/controllers/providers_controller.rb
b/src/app/controllers/providers_controller.rb
index 7b1929c..b72e71e 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -212,6 +212,7 @@ class ProvidersController < ApplicationController
{:name => 'Realms', :view => 'realms/list', :id =>
'realms', :count => @realms.count},
#{:name => 'Roles & Permissions', :view => @view, :id
=> 'roles', :count => @provider.permissions.count},
]
+ add_permissions_tab(@provider, "edit_")
details_tab_name = params[:details_tab].blank? ? 'connectivity' :
params[:details_tab]
@details_tab = @tabs.find {|t| t[:id] == details_tab_name} ||
@tabs.first[:name].downcase
diff --git a/src/app/views/deployments/_permissions.html.haml
b/src/app/views/deployments/_permissions.html.haml
index 1784789..e73ced3 100644
--- a/src/app/views/deployments/_permissions.html.haml
+++ b/src/app/views/deployments/_permissions.html.haml
@@ -1,2 +1 @@
-%h3 Users and roles they are in for this Deployment
-%h3 Manage permissions on this deployment (if you have permissions to do so)
+= render :partial => 'permissions/permissions'
diff --git a/src/app/views/permissions/_form.html.haml
b/src/app/views/permissions/_form.html.haml
index 8c2debd..b1b6ed4 100644
--- a/src/app/views/permissions/_form.html.haml
+++ b/src/app/views/permissions/_form.html.haml
@@ -1,9 +1,11 @@
- content_for :form_footer do
= hidden_field_tag :permission_object_type, @permission_object.class.name
= hidden_field_tag :permission_object_id, @permission_object.id
- = link_to 'Cancel', polymorphic_path(@permission_object,
- :details_tab => :permissions,
- :only_tab => true), :class => 'button
danger'
+ = hidden_field_tag :path_prefix, @path_prefix
+ = link_to 'Cancel', send("#{@path_prefix}polymorphic_path",
+ @permission_object,
+ :details_tab => :permissions,
+ :only_tab => true), :class => 'button danger'
= restful_submit_tag "Grant Access", "create", permissions_path,
'POST', :id => 'save_button'
= filter_table(@header, @users) do |user|
%tr{:class => cycle('nostripe','stripe')}
diff --git a/src/app/views/permissions/_new.html.haml
b/src/app/views/permissions/_new.html.haml
index 63d8125..a314b51 100644
--- a/src/app/views/permissions/_new.html.haml
+++ b/src/app/views/permissions/_new.html.haml
@@ -2,7 +2,7 @@
%h1{:class => controller.controller_name} Grant Access
#obj_actions.button-group
Return to
- = link_to "#{(a)permission_object.name} #{(a)permission_object.class}",
polymorphic_path(@permission_object, :details_tab => :permissions, :only_tab =>
true), :class => 'button primary', :id => 'new_pool_button'
+ = link_to "#{(a)permission_object.name} #{(a)permission_object.class}",
send("#{@path_prefix}polymorphic_path", @permission_object, :details_tab =>
:permissions, :only_tab => true), :class => 'button primary', :id =>
'new_pool_button'
.corner
%section.content-section.pools
diff --git a/src/app/views/permissions/_permissions.html.haml
b/src/app/views/permissions/_permissions.html.haml
index cf0cf4f..0374510 100644
--- a/src/app/views/permissions/_permissions.html.haml
+++ b/src/app/views/permissions/_permissions.html.haml
@@ -1,12 +1,13 @@
- content_for :form_header do
- if check_privilege(Privilege::PERM_SET)
%li
- = link_to "Grant Access", new_permission_path(:permission_object_type
=> @permission_object.class.name, :permission_object_id => @permission_object.id), {
:class => 'button primary', :id => 'new_permission_button'}
+ = link_to "Grant Access", new_permission_path(:permission_object_type
=> @permission_object.class.name, :permission_object_id => @permission_object.id,
:path_prefix => @path_prefix), { :class => 'button primary', :id =>
'new_permission_button'}
= restful_submit_tag "Revoke Access", "destroy",
multi_destroy_permissions_path, 'DELETE', :id => 'delete_button',
:class => 'button danger'
= restful_submit_tag "Edit", "multi_update",
multi_update_permissions_path, 'POST', :id => 'edit_button', :class
=> 'hidden'
.corner
= hidden_field_tag :permission_object_type, @permission_object.class.name
= hidden_field_tag :permission_object_id, @permission_object.id
+ = hidden_field_tag :path_prefix, @path_prefix
= filter_table(@permission_list_header, @permission_object.permissions) do |permission|
%tr{:class => cycle('nostripe','stripe')}
diff --git a/src/app/views/providers/_permissions.html.haml
b/src/app/views/providers/_permissions.html.haml
index e69de29..e73ced3 100644
--- a/src/app/views/providers/_permissions.html.haml
+++ b/src/app/views/providers/_permissions.html.haml
@@ -0,0 +1 @@
+= render :partial => 'permissions/permissions'
--
1.7.6.4
_______________________________________________
aeolus-devel mailing list
aeolus-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/aeolus-devel
ACK, the functionality works and the tests pass. There are a couple xhr issues and some
css tweaks we discussed on irc. Thanks for fixing that test.
Once the xhr issue is worked about works fire away, nice work.