Merge pull request #17209 from Godmartinz/saml_xml_update_bug

Fixed #17089: SAML metadata now updating with new XML uploads
This commit is contained in:
snipe
2025-06-23 16:40:35 +01:00
committed by GitHub
3 changed files with 26 additions and 13 deletions
+1 -1
View File
@@ -924,7 +924,7 @@ class SettingsController extends Controller
* @since v5.0.0
*/
public function postSamlSettings(SettingsSamlRequest $request) : RedirectResponse
{
{
if (is_null($setting = Setting::getSettings())) {
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
}
+22 -11
View File
@@ -41,6 +41,7 @@ class SettingsSamlRequest extends FormRequest
public function withValidator($validator)
{
$validator->after(function ($validator) {
$setting = Setting::getSettings();
if ($this->input('saml_enabled') == '1') {
$idpMetadata = $this->input('saml_idp_metadata');
if (! empty($idpMetadata)) {
@@ -56,7 +57,7 @@ class SettingsSamlRequest extends FormRequest
}
}
$was_custom_x509cert = strpos(Setting::getSettings()->saml_custom_settings, 'sp_x509cert') !== false;
$was_custom_x509cert = strpos($setting->saml_custom_settings, 'sp_x509cert') !== false;
$custom_x509cert = '';
$custom_privateKey = '';
@@ -126,10 +127,14 @@ class SettingsSamlRequest extends FormRequest
}
if (! (empty($x509cert) && empty($privateKey))) {
$this->merge([
'saml_sp_x509cert' => $x509cert,
'saml_sp_privatekey' => $privateKey,
]);
// $this->merge([
// 'saml_sp_x509cert' => $x509cert,
// 'saml_sp_privatekey' => $privateKey,
// ]);
$setting->saml_sp_x509cert = $x509cert;
$setting->saml_sp_privatekey = $privateKey;
$setting->save();
}
} else {
$validator->errors()->add('saml_integration', 'openssl.cnf is missing/invalid');
@@ -145,15 +150,21 @@ class SettingsSamlRequest extends FormRequest
}
if (! empty($x509certNew)) {
$this->merge([
'saml_sp_x509certNew' => $x509certNew,
]);
// $this->merge([
// 'saml_sp_x509certNew' => $x509certNew,
// ]);
$setting->saml_sp_x509certNew = $x509certNew;
$setting->save();
}
} else {
$this->merge([
'saml_sp_x509certNew' => '',
]);
// $this->merge([
// 'saml_sp_x509certNew' => '',
// ]);
$setting->saml_sp_x509certNew = '';
$setting->save();
}
});
}
}
+3 -1
View File
@@ -85,6 +85,7 @@
<label for="saml_sp_x509cert">{{ trans('admin/settings/general.saml_sp_x509cert') }}</label>
<x-input.textarea
name="saml_sp_x509cert"
id="saml_sp_x509cert"
:value="$setting->saml_sp_x509cert"
wrap="off"
readonly
@@ -113,6 +114,7 @@
<div class="col-md-9">
<x-input.textarea
name="saml_idp_metadata"
id="saml_idp_metadata"
:value="old('saml_idp_metadata', $setting->saml_idp_metadata)"
placeholder="https://example.com/idp/metadata"
wrap="off"
@@ -218,7 +220,7 @@
var fr = new FileReader();
fr.onload = function(e) {
$('#saml_idp_metadata').text(e.target.result);
$('#saml_idp_metadata').val(e.target.result);
}
fr.readAsText(this.files[0]);