diff options
author | Christopher Baines <mail@cbaines.net> | 2018-03-26 22:11:04 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2018-04-03 21:57:39 +0100 |
commit | 4e34ede0d390d5158188d20b1dbf6d87b6c60b9f (patch) | |
tree | 1303b5d3552775253b4808c4b930e51761526218 | |
parent | 9649f88d2857e686c59867031aaad228cc4358fa (diff) | |
download | govuk-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.rb | 14 | ||||
-rw-r--r-- | app/models/mini_environment.rb | 14 | ||||
-rw-r--r-- | app/views/mini_environments/new.html.erb | 55 |
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"> |