aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2018-03-26 22:11:04 +0100
committerChristopher Baines <mail@cbaines.net>2018-04-03 21:57:39 +0100
commit4e34ede0d390d5158188d20b1dbf6d87b6c60b9f (patch)
tree1303b5d3552775253b4808c4b930e51761526218
parent9649f88d2857e686c59867031aaad228cc4358fa (diff)
downloadgovuk-mini-environment-admin-4e34ede0d390d5158188d20b1dbf6d87b6c60b9f.tar
govuk-mini-environment-admin-4e34ede0d390d5158188d20b1dbf6d87b6c60b9f.tar.gz
Add support for specifying Signon users
When creating mini environments.
-rw-r--r--app/controllers/mini_environments_controller.rb14
-rw-r--r--app/models/mini_environment.rb14
-rw-r--r--app/views/mini_environments/new.html.erb55
3 files changed, 82 insertions, 1 deletions
diff --git a/app/controllers/mini_environments_controller.rb b/app/controllers/mini_environments_controller.rb
index 5c7f6f6..82baeab 100644
--- a/app/controllers/mini_environments_controller.rb
+++ b/app/controllers/mini_environments_controller.rb
@@ -5,6 +5,13 @@ class MiniEnvironmentsController < ApplicationController
def new
@mini_environment = MiniEnvironment.new
+
+ @mini_environment.signon_users = [
+ {
+ name: current_user.name,
+ email: current_user.email
+ }
+ ]
end
def create
@@ -12,7 +19,12 @@ class MiniEnvironmentsController < ApplicationController
:mini_environment
).permit(
:name,
- :govuk_guix_revision_id
+ :govuk_guix_revision_id,
+ signon_users_attributes: [
+ :name,
+ :email,
+ :role
+ ]
)
@mini_environment = MiniEnvironment.new(parameters)
diff --git a/app/models/mini_environment.rb b/app/models/mini_environment.rb
index 4dc4a86..c31655d 100644
--- a/app/models/mini_environment.rb
+++ b/app/models/mini_environment.rb
@@ -24,4 +24,18 @@ class MiniEnvironment < ApplicationRecord
def enqueued_terraform_jobs
Que.execute("SELECT * FROM que_jobs WHERE args->>0 = '#{id}'")
end
+
+ def signon_user_openstructs
+ signon_users.map do |signon_user|
+ OpenStruct.new(
+ signon_user.merge(
+ 'persisted?' => false
+ )
+ )
+ end
+ end
+
+ def signon_users_attributes=(attributes)
+ self.signon_users = attributes.sort.map(&:last)
+ end
end
diff --git a/app/views/mini_environments/new.html.erb b/app/views/mini_environments/new.html.erb
index 33cb354..2f54481 100644
--- a/app/views/mini_environments/new.html.erb
+++ b/app/views/mini_environments/new.html.erb
@@ -29,6 +29,61 @@
<div class="panel panel-default">
<div class="panel-heading">
+ <h3 style="margin-top: 10px;">Signon users</h3>
+ </div>
+ <div class="panel-body">
+ <p>
+ This user will be created automatically. To allow the
+ creation of additional users, pick the Admin or Superadmin
+ roles.
+ </p>
+ <p>
+ The password will be provided when the mini environment is created.
+ </p>
+ </div>
+ <ul class="list-group">
+ <% @mini_environment.signon_user_openstructs.each do |signon_user| %>
+ <li class="list-group-item">
+ <%= f.fields_for :signon_users, signon_user do |signon_users_form| %>
+ <div class="form-group form-group-lg">
+ <%= signon_users_form.label :name, class: 'col-sm-3 control-label' %>
+ <div class="col-sm-9">
+ <%= signon_users_form.text_field :name, class: 'form-control' %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= signon_users_form.label :email, 'Email address', class: 'col-sm-3 control-label' %>
+ <div class="col-sm-9">
+ <%= signon_users_form.text_field :email, class: 'form-control' %>
+ </div>
+ </div>
+
+ <div class="form-group form-group-lg">
+ <%= signon_users_form.label :role, class: 'col-sm-3 control-label' %>
+ <div class="col-sm-9">
+ <%= signon_users_form.select(
+ :role,
+ [
+ 'Normal',
+ 'Organisation Admin',
+ 'Super Organisation Admin',
+ 'Admin',
+ 'Superadmin'
+ ].map { |role| [role, role.parameterize(separator: '_')] },
+ { selected: 'admin' },
+ { class: 'form-control'}
+ ) %>
+ </div>
+ </div>
+ <% end %>
+ </li>
+ <% end %>
+ </ul>
+ </div>
+
+ <div class="panel panel-default">
+ <div class="panel-heading">
<h3 style="margin-top: 10px;">Advanced options</h3>
</div>
<div class="panel-body">