diff --git a/app/assets/javascripts/admin/commons/sso.js b/app/assets/javascripts/admin/commons/sso.js index 1009ce91052b4ba3754978f3e3ea4646ddbc212a..558f534458aecb91af578fbe0b0a77f2a4c254d7 100644 --- a/app/assets/javascripts/admin/commons/sso.js +++ b/app/assets/javascripts/admin/commons/sso.js @@ -5,6 +5,13 @@ window.osuny.sso = { this.hasSsoInput.addEventListener('change', this.onHasSsoChange.bind(this)); this.ssoFields = document.querySelectorAll('.sso-inputs'); this.onHasSsoChange(); + + this.hasInheritedSsoInput = document.querySelector('input[type="checkbox"][name$="[sso_inherit_from_university]"]'); + if (this.hasInheritedSsoInput) { + this.hasInheritedSsoInput.addEventListener('change', this.onHasInheritedSsoChange.bind(this)); + this.ssoInheritedFields = document.querySelectorAll('.sso-inherited-inputs'); + this.onHasInheritedSsoChange(); + } }, onHasSsoChange: function () { @@ -20,6 +27,19 @@ window.osuny.sso = { } }, + onHasInheritedSsoChange: function () { + 'use strict'; + var value = this.hasInheritedSsoInput.checked, + i; + for (i = 0; i < this.ssoInheritedFields.length; i += 1) { + if (value) { + this.ssoInheritedFields[i].classList.add('d-none'); + } else { + this.ssoInheritedFields[i].classList.remove('d-none'); + } + } + }, + invoke: function () { 'use strict'; return { diff --git a/app/controllers/admin/communication/extranets_controller.rb b/app/controllers/admin/communication/extranets_controller.rb index 2a11232395bae510bc1bf23040a20fd9978da2f8..56a12f99240789ea9688ba540febe057a20fe96b 100644 --- a/app/controllers/admin/communication/extranets_controller.rb +++ b/app/controllers/admin/communication/extranets_controller.rb @@ -64,6 +64,9 @@ class Admin::Communication::ExtranetsController < Admin::Communication::Applicat def extranet_params params.require(:communication_extranet) - .permit(:name, :domain, :about_type, :about_id, :registration_contact, :logo, :logo_delete) + .permit(:name, :domain, :about_type, :about_id, + :registration_contact, :logo, :logo_delete, + :has_sso, :sso_inherit_from_university, :sso_target_url, :sso_cert, :sso_name_identifier_format, :sso_mapping + ) end end diff --git a/app/views/admin/communication/extranets/_form.html.erb b/app/views/admin/communication/extranets/_form.html.erb index c878aa055cecf8aee575a96ad619d9f9b8468f34..44b31c367996fc654d223805758b7b6b0b3acd41 100644 --- a/app/views/admin/communication/extranets/_form.html.erb +++ b/app/views/admin/communication/extranets/_form.html.erb @@ -36,15 +36,19 @@ <%= f.input :has_sso %> <div class="sso-inputs"> <%= f.input :sso_inherit_from_university if current_university.has_sso? %> - <%= f.input :sso_target_url, required: true %> - <%= f.input :sso_cert, required: true %> - <%= f.input :sso_name_identifier_format, required: true %> + <div class="sso-inherited-inputs"> + <%= f.input :sso_target_url, required: true %> + <%= f.input :sso_cert, required: true %> + <%= f.input :sso_name_identifier_format, required: true %> + </div> </div> </div> <div class="col-md-6 sso-inputs"> - <h4 class="mb-4"><%= University.human_attribute_name('sso_mapping') %></h4> - <%= f.error_notification message: f.object.errors[:sso_mapping].to_sentence if f.object.errors[:sso_mapping].present? %> - <%= render 'server/universities/sso_mapping', kind: 'extranet', object: extranet %> + <div class="sso-inherited-inputs"> + <h4 class="mb-4"><%= University.human_attribute_name('sso_mapping') %></h4> + <%= f.error_notification message: f.object.errors[:sso_mapping].to_sentence if f.object.errors[:sso_mapping].present? %> + <%= render 'server/universities/sso_mapping', kind: 'extranet', object: extranet %> + </div> </div> </div> </div> diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml index 1b4f745ec698ba2af297772dc95d0726f1f09343..3f28e9e1f78ecedfa6312014fb29c940eba3ec47 100644 --- a/config/locales/communication/en.yml +++ b/config/locales/communication/en.yml @@ -131,6 +131,12 @@ en: text: Text title: Title website: Website + errors: + models: + communication/extranet: + attributes: + sso_mapping: + missing_email: doesn't handle the email admin: communication: blocks: diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml index 0646d6c9cbcfa19051875807b691ee1ec43f6c09..5b3e5b824523f146ed140a77bd6f9bc005562fec 100644 --- a/config/locales/communication/fr.yml +++ b/config/locales/communication/fr.yml @@ -132,6 +132,12 @@ fr: text: Texte title: Titre website: Site Web + errors: + models: + communication/extranet: + attributes: + sso_mapping: + missing_email: ne gère pas l'adresse email admin: communication: blocks: