From: martyntaylor <mtay...@redhat.com> --- src/app/controllers/settings_controller.rb | 26 ++++++++++++++++++++ src/app/views/settings/index.haml | 9 +++++- src/app/views/settings/self_service.haml | 11 +++++++- .../20100707000000_create_metadata_objects.rb | 9 +++++++ .../self_service_policy_management.feature | 13 ++++++++++ .../self_service_policy_management_steps.rb | 4 +++ src/features/support/paths.rb | 3 ++ 7 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 src/features/self_service_policy_management.feature create mode 100644 src/features/step_definitions/self_service_policy_management_steps.rb
diff --git a/src/app/controllers/settings_controller.rb b/src/app/controllers/settings_controller.rb index 84f80be..c9dca83 100644 --- a/src/app/controllers/settings_controller.rb +++ b/src/app/controllers/settings_controller.rb @@ -22,12 +22,38 @@ class SettingsController < ApplicationController before_filter :require_user + # Settings MetaData Keys + ALLOW_SELF_SERVICE_LOGINS = "allow_self_service_logins" + def index + @is_admin = is_admin? @providers = Provider.list_for_user(@current_user, Privilege::PROVIDER_VIEW) end def self_service + if !is_admin? + raise PermissionError.new('You have insufficient privileges to perform action.') + return + end + + @allow_self_service_logins = MetadataObject.lookup(ALLOW_SELF_SERVICE_LOGINS) == "true" ? true : false + @providers = Provider.list_for_user(@current_user, Privilege::PROVIDER_VIEW) end + def update + if !params[ALLOW_SELF_SERVICE_LOGINS] + MetadataObject.set(key, 'false') + end + + params.each_pair do |key, value| + MetadataObject.set(key, value) + end + end + + private + def is_admin? + is_admin = @current_user.permissions.collect { |p| p.role }.find { |r| r.name == "Administrator" } + return is_admin == nil ? false : true + end end diff --git a/src/app/views/settings/index.haml b/src/app/views/settings/index.haml index fc7e3b2..6c376f5 100644 --- a/src/app/views/settings/index.haml +++ b/src/app/views/settings/index.haml @@ -1,2 +1,7 @@ -%h1 Settings -Insert Page 3100 Implementation Here. +%h1 + Settings + +%h2 + -if @is_admin + %a{:href => url_for(:controller => "settings", :action => "self_service")} + self service settings diff --git a/src/app/views/settings/self_service.haml b/src/app/views/settings/self_service.haml index 0185073..0746cd6 100644 --- a/src/app/views/settings/self_service.haml +++ b/src/app/views/settings/self_service.haml @@ -1 +1,10 @@ -Insert Page 3170 Implementation Here. +%h1 + self service settings page + +- form_tag :action => 'update' do |form| + %fieldset + %legend Self Service Settings + %label + Allow self service logins + = check_box_tag 'allow_self_service_logins', 'true', @allow_self_service_logins, :disabled => true + = submit_tag "Save", :class => "submit" \ No newline at end of file diff --git a/src/db/migrate/20100707000000_create_metadata_objects.rb b/src/db/migrate/20100707000000_create_metadata_objects.rb index 2f3eeb5..50b097c 100644 --- a/src/db/migrate/20100707000000_create_metadata_objects.rb +++ b/src/db/migrate/20100707000000_create_metadata_objects.rb @@ -31,6 +31,15 @@ class CreateMetadataObjects < ActiveRecord::Migration default_zone = Zone.first MetadataObject.set("default_zone", default_zone) if default_zone + + #create default settings + settings = {"allow_self_service_logins" => "true"} + MetadataObject.transaction do + settings.each_pair do |key, value| + mdo = MetadataObject.new(:key => key, :value => value) + mdo.save! + end + end end def self.down diff --git a/src/features/self_service_policy_management.feature b/src/features/self_service_policy_management.feature new file mode 100644 index 0000000..c80a23c --- /dev/null +++ b/src/features/self_service_policy_management.feature @@ -0,0 +1,13 @@ +Feature: Cloud Engine Self Service Policy Management + In order to manage policy settings for self service + As an Admin + I must use the policy engine to configure the application + + Background: + Given I am an authorised user + And I am logged in + + Scenario: Set up Cloud Engine Policy for self-service + Given I am on the system settings page + When I follow "self service settings" + Then I should see "Allow self service logins" \ No newline at end of file diff --git a/src/features/step_definitions/self_service_policy_management_steps.rb b/src/features/step_definitions/self_service_policy_management_steps.rb new file mode 100644 index 0000000..82590fd --- /dev/null +++ b/src/features/step_definitions/self_service_policy_management_steps.rb @@ -0,0 +1,4 @@ +Given /^I am an admin$/ do + @admin_permission = Factory :admin_permission + @user = @admin_permission.user +end \ No newline at end of file diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb index 537dd31..858aa09 100644 --- a/src/features/support/paths.rb +++ b/src/features/support/paths.rb @@ -65,6 +65,9 @@ module NavigationHelpers when /the new permission page/ url_for :action => 'new', :controller => 'permissions', :only_path => true + when /the system settings page/ + url_for :action => 'index', :controller => 'settings', :only_path => true + # Add more mappings here. # Here is an example that pulls values out of the Regexp: # -- 1.7.1.1 _______________________________________________ deltacloud-devel mailing list deltacloud-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/deltacloud-devel