From: martyntaylor <[email protected]>
---
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
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel