bug fix in saving configuration changes on manage applications page

This commit is contained in:
Lai Wei 2024-03-05 22:55:33 +00:00
Родитель 017b6b8e95
Коммит 10cd93824e
2 изменённых файлов: 16 добавлений и 2 удалений

Просмотреть файл

@ -11,6 +11,8 @@ M.auth_oidc.init = function(Y, idptype_ms, authmethodsecret, authmethodcertifica
var $clientprivatekeyfile = $("#id_clientprivatekeyfile");
var $clientcertfile = $("#id_clientcertfile");
var $clientcertpassphrase = $("#id_clientcertpassphrase");
var $clientcertsource = $("#id_clientcertsource");
var $secretexpiryrecipients = $("#id_secretexpiryrecipients");
$idptype.change(function() {
if ($(this).val() != idptype_ms) {
@ -19,11 +21,13 @@ M.auth_oidc.init = function(Y, idptype_ms, authmethodsecret, authmethodcertifica
});
$clientauthmethod.val(authmethodsecret);
$clientsecret.prop('disabled', false);
$clientcertsource.prop('disabled', true);
$clientcert.prop('disabled', true);
$clientprivatekey.prop('disabled', true);
$clientprivatekeyfile.prop('disabled', true);
$clientcertfile.prop('disabled', true);
$clientcertpassphrase.prop('disabled', true);
$secretexpiryrecipients.prop('disabled', false);
} else {
$clientauthmethod.append("<option value='" + authmethodcertificate + "'>" + authmethodcertificatetext + "</option>");
}
@ -36,6 +40,9 @@ M.auth_oidc.init = function(Y, idptype_ms, authmethodsecret, authmethodcertifica
$clientprivatekeyfile.prop('disabled', false);
$clientcertfile.prop('disabled', false);
$clientcertpassphrase.prop('disabled', false);
$clientcertsource.prop('disabled', false);
} else {
$secretexpiryrecipients.prop('disabled', false);
}
});
};

Просмотреть файл

@ -57,7 +57,7 @@ $form = new application(null, ['oidcconfig' => $oidcconfig]);
$formdata = [];
foreach (['idptype', 'clientid', 'clientauthmethod', 'clientsecret', 'clientprivatekey', 'clientcert',
'clientcertsource', 'clientprivatekeyfile', 'clientcertfile', 'clientcertpassphrase',
'authendpoint', 'tokenendpoint', 'oidcresource', 'oidcscope'] as $field) {
'authendpoint', 'tokenendpoint', 'oidcresource', 'oidcscope', 'secretexpiryrecipients'] as $field) {
if (isset($oidcconfig->$field)) {
$formdata[$field] = $oidcconfig->$field;
}
@ -81,6 +81,7 @@ if ($form->is_cancelled()) {
switch ($fromform->clientauthmethod) {
case AUTH_OIDC_AUTH_METHOD_SECRET:
$configstosave[] = 'clientsecret';
$configstosave[] = 'secretexpiryrecipients';
break;
case AUTH_OIDC_AUTH_METHOD_CERTIFICATE:
$configstosave[] = 'clientcertsource';
@ -100,14 +101,18 @@ if ($form->is_cancelled()) {
// Save config settings.
$updateapplicationtokenrequired = false;
$settingschanged = false;
foreach ($configstosave as $config) {
$existingsetting = get_config('auth_oidc', $config);
if ($fromform->$config != $existingsetting) {
set_config($config, $fromform->$config, 'auth_oidc');
add_to_config_log($config, $existingsetting, $fromform->$config, 'auth_oidc');
$settingschanged = true;
if ($config != 'secretexpiryrecipients') {
$updateapplicationtokenrequired = true;
}
}
}
// Redirect destination and message depend on IdP type.
$isgraphapiconnected = false;
@ -130,6 +135,8 @@ if ($form->is_cancelled()) {
} else {
redirect($url, get_string('application_updated', 'auth_oidc'));
}
} else if ($settingschanged) {
redirect($url, get_string('application_updated', 'auth_oidc'));
} else {
redirect($url, get_string('application_not_changed', 'auth_oidc'));
}