---
src/app/controllers/application_controller.rb | 10 +++++++
src/app/controllers/permissions_controller.rb | 37 ++++++++++++++++---------
src/app/controllers/users_controller.rb | 1 +
src/app/views/permissions/_form.html.haml | 5 +---
src/app/views/permissions/_new.html.haml | 4 +-
src/app/views/permissions/index.html.haml | 6 +++-
src/app/views/permissions/list.html.haml | 34 +++--------------------
src/app/views/permissions/new.html.haml | 2 +
src/app/views/users/index.html.haml | 22 +--------------
src/config/navigation.rb | 2 +-
10 files changed, 51 insertions(+), 72 deletions(-)
diff --git a/src/app/controllers/application_controller.rb
b/src/app/controllers/application_controller.rb
index 0ad58a9..049c227 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -250,6 +250,16 @@ class ApplicationController < ActionController::Base
end
end
+ def set_admin_users_tabs(tab)
+ @tabs = [{:name => 'Users', :url => users_url, :id =>
'catalogs'},
+ #{:name => 'Groups', :url => groups_url, :id =>
'groups'},
+ {:name => 'Global Role Grants', :url => permissions_url, :id
=> 'permissions'},
+ ]
+ unless @details_tab = @tabs.find {|t| t[:id] == tab}
+ raise "Tab '#{tab}' doesn't exist"
+ end
+ end
+
def sort_column(model, default="name")
model.column_names.include?(params[:order_field]) ? params[:order_field] : default
end
diff --git a/src/app/controllers/permissions_controller.rb
b/src/app/controllers/permissions_controller.rb
index 267788b..7a9a5a4 100644
--- a/src/app/controllers/permissions_controller.rb
+++ b/src/app/controllers/permissions_controller.rb
@@ -22,10 +22,11 @@ class PermissionsController < ApplicationController
def index
set_permission_object(Privilege::PERM_VIEW)
+ @roles = Role.find_all_by_scope((a)permission_object.class.name)
respond_to do |format|
format.html
format.json { render :json => @permission_object.as_json }
- format.js { render :partial => 'index' }
+ format.js { render :partial => 'permissions' }
end
end
@@ -33,6 +34,13 @@ class PermissionsController < ApplicationController
set_permission_object
@users = User.all
@roles = Role.find_all_by_scope((a)permission_object.class.name)
+ if @permission_object == BasePermissionObject.general_permission_scope
+ @return_text = "Global Role Grants"
+ @summary_text = "Choose global role assignments for users"
+ else
+ @return_text = "#{(a)permission_object.name} #{(a)permission_object.class}"
+ @summary_text = "Choose roles for users you would like to grant access to this
#{(a)permission_object.class}"
+ end
load_headers
load_users
respond_to do |format|
@@ -68,10 +76,7 @@ class PermissionsController < ApplicationController
flash[:error] = t "permissions.flash.error.no_users_selected"
end
respond_to do |format|
- format.html { redirect_to send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to @return_path }
format.js { render :partial => 'index',
:permission_object_type => @permission_object.class.name,
:permission_object_id => @permission_object.id }
@@ -108,10 +113,7 @@ class PermissionsController < ApplicationController
flash[:error] = t"permissions.flash.error.no_users_selected"
end
respond_to do |format|
- format.html { redirect_to send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to @return_path }
format.js { render :partial => 'index',
:permission_object_type => @permission_object.class.name,
:permission_object_id => @permission_object.id }
@@ -138,10 +140,7 @@ class PermissionsController < ApplicationController
flash[:error] = "#{t('permissions.flash.error.not_deleted')}:
#{not_deleted.join(', ')}"
end
respond_to do |format|
- format.html { redirect_to send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true) }
+ format.html { redirect_to @return_path }
format.js { render :partial => 'index',
:permission_object_type => @permission_object.class.name,
:permission_object_id => @permission_object.id }
@@ -181,8 +180,20 @@ class PermissionsController < ApplicationController
obj_type = params[:permission_object_type]
id = params[:permission_object_id]
@path_prefix = params[:path_prefix]
+ unless obj_type or id
+ @permission_object = BasePermissionObject.general_permission_scope
+ end
@permission_object = obj_type.constantize.find(id) if obj_type and id
raise RuntimeError, "invalid permission object" if @permission_object.nil?
+ if @permission_object == BasePermissionObject.general_permission_scope
+ @return_path = permissions_path
+ set_admin_users_tabs 'permissions'
+ else
+ @return_path = send("#{@path_prefix}polymorphic_path",
+ @permission_object,
+ :details_tab => :permissions,
+ :only_tab => true)
+ end
require_privilege(required_role, @permission_object)
end
end
diff --git a/src/app/controllers/users_controller.rb
b/src/app/controllers/users_controller.rb
index d634c88..23afdce 100644
--- a/src/app/controllers/users_controller.rb
+++ b/src/app/controllers/users_controller.rb
@@ -24,6 +24,7 @@ class UsersController < ApplicationController
require_privilege(Privilege::VIEW, User)
clear_breadcrumbs
save_breadcrumb(users_path)
+ set_admin_users_tabs 'catalogs'
@params = params
load_headers
load_users
diff --git a/src/app/views/permissions/_form.html.haml
b/src/app/views/permissions/_form.html.haml
index b1b6ed4..b6be8ae 100644
--- a/src/app/views/permissions/_form.html.haml
+++ b/src/app/views/permissions/_form.html.haml
@@ -2,10 +2,7 @@
= 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
- = link_to 'Cancel', send("#{@path_prefix}polymorphic_path",
- @permission_object,
- :details_tab => :permissions,
- :only_tab => true), :class => 'button danger'
+ = link_to 'Cancel', @return_path, :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 a314b51..2198a6a 100644
--- a/src/app/views/permissions/_new.html.haml
+++ b/src/app/views/permissions/_new.html.haml
@@ -2,11 +2,11 @@
%h1{:class => controller.controller_name} Grant Access
#obj_actions.button-group
Return to
- = 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'
+ = link_to @return_text, @return_path, :class => 'button primary', :id
=> 'new_pool_button'
.corner
%section.content-section.pools
- Choose roles for users you would like to grant access to this
#{(a)permission_object.class}
+ = @summary_text
%header
%h2 Users
diff --git a/src/app/views/permissions/index.html.haml
b/src/app/views/permissions/index.html.haml
index 229236b..544986c 100644
--- a/src/app/views/permissions/index.html.haml
+++ b/src/app/views/permissions/index.html.haml
@@ -1 +1,5 @@
-= render :partial => 'permissions'
+- if @permission_object == BasePermissionObject.general_permission_scope
+ = render :partial => 'layouts/admin_nav'
+ = render :partial => 'layouts/admin_users_tabs'
+- else
+ = render :partial => 'permissions'
diff --git a/src/app/views/permissions/list.html.haml
b/src/app/views/permissions/list.html.haml
index 859527a..544986c 100644
--- a/src/app/views/permissions/list.html.haml
+++ b/src/app/views/permissions/list.html.haml
@@ -1,31 +1,5 @@
-- if @permission_object.permissions.size == 0
- %h1
- There are no permissions defined on #{(a)permission_object.name}
+- if @permission_object == BasePermissionObject.general_permission_scope
+ = render :partial => 'layouts/admin_nav'
+ = render :partial => 'layouts/admin_users_tabs'
- else
- %table
- %thead
- %tr
- %th{:scope => "col"} User
- %th{:scope => "col"} Role
- %th{:scope => "col"} Action
- %tbody
- - @permission_object.permissions.each {|permission|
- %tr
- %td= permission.user.login
- %td= permission.role.name
- %td
- - if check_privilege(Privilege::PERM_SET)
- = form_tag :action => 'destroy' do
- = hidden_field :permission, :id, :value => permission.id
- = submit_tag "delete", :class => "submit_link", :id
=> "delete_#{permission.id}"
- - }
-= link_to "Add a user",
|
- {:controller => "users",
|
- :action => "new"},
|
- :class=>"actionlink" if
check_privilege(Privilege::CREATE,User,BasePermissionObject.general_permission_scope) |
--#
-= link_to "Add a new permission record", |
- {:action => "new", |
- :permission_object_type => @permission_object.class, |
- :permission_object_id => @permission_object.id}, |
- :class=>"actionlink" if check_privilege(Privilege::PERM_SET) |
+ = render :partial => 'permissions'
diff --git a/src/app/views/permissions/new.html.haml
b/src/app/views/permissions/new.html.haml
index b40557d..8a73c70 100644
--- a/src/app/views/permissions/new.html.haml
+++ b/src/app/views/permissions/new.html.haml
@@ -1 +1,3 @@
+- if @permission_object == BasePermissionObject.general_permission_scope
+ = render :partial => 'layouts/admin_nav'
= render :partial => 'new'
diff --git a/src/app/views/users/index.html.haml b/src/app/views/users/index.html.haml
index e23dd63..7cc23db 100644
--- a/src/app/views/users/index.html.haml
+++ b/src/app/views/users/index.html.haml
@@ -1,22 +1,2 @@
= render :partial => 'layouts/admin_nav'
-%header.admin-page-header
- #obj_actions
- =t'users.quick_jump'
- /= link_to 'Groups', "#groups", :class =>
'rounded-link'
- = link_to "#{t'users.users'}", "#users", :class =>
'rounded-link'
- /= link_to 'Roles', "#roles", :class => 'rounded-link'
- .clear
-/%section.admin-content-section
-/ %header
-/ %h2#groups.groups Groups
-/ .section-controls
-/ #obj_actions
-/ = link_to "", "#", :class => 'add-group-button',
:id => 'add_group_button'
-/ .content
-/ Unimplemented.
-= render :partial => 'list'
-/%section.admin-content-section
-/ %header
-/ %h2#roles.roles Roles
-/ .content
-/ Unimplemented.
+= render :partial => 'layouts/admin_users_tabs'
diff --git a/src/config/navigation.rb b/src/config/navigation.rb
index cbbc5a6..12400d8 100644
--- a/src/config/navigation.rb
+++ b/src/config/navigation.rb
@@ -22,7 +22,7 @@ SimpleNavigation::Configuration.run do |navigation|
first_level.dom_class = 'container'
first_level.item :monitor, t('navigation.first_level.monitor'), pools_path,
:class => 'monitor', :link => { :id => 'monitor' },
:highlights_on => /\/deployments|\/pools|\/instances|\/\z/
first_level.item :administer, t('navigation.first_level.administer'),
users_path, :class => 'administer' do |second_level|
- second_level.item :users_and_groups,
t('navigation.second_level.users_groups'), users_path, :link => { :class =>
'users' }, :highlights_on => /\/users|\/roles|\/account/
+ second_level.item :users_and_groups,
t('navigation.second_level.users_groups'), users_path, :link => { :class =>
'users' }, :highlights_on => /\/users|\/roles|\/permissions|\/account/
second_level.item :environments, t('navigation.second_level.environments'),
pool_families_path, :link => { :class => 'environments' }, :highlights_on
=> /\/pool_families/
second_level.item :content, t('navigation.second_level.content'),
catalogs_path, :link => { :class => 'content' }, :highlights_on =>
/\/catalogs|\/catalog_entries|\/realms|\/hardware_profiles|\/realm_mappings/
second_level.item :cloud_providers,
t('navigation.second_level.cloud_providers'), providers_path, :link => { :class
=> 'providers' }, :highlights_on => /\/providers/
--
1.7.6.4