aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/JsonApi/Routes/SAML/SetupInformation.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/classes/JsonApi/Routes/SAML/SetupInformation.php')
-rw-r--r--lib/classes/JsonApi/Routes/SAML/SetupInformation.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/classes/JsonApi/Routes/SAML/SetupInformation.php b/lib/classes/JsonApi/Routes/SAML/SetupInformation.php
new file mode 100644
index 0000000..6dc8f44
--- /dev/null
+++ b/lib/classes/JsonApi/Routes/SAML/SetupInformation.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Studip\SAML;
+
+use Config;
+
+class SetupInformation
+{
+ private const CONFIG_KEY = 'SAML_CONFIG';
+
+ public function getConfiguration(): array
+ {
+ $config = Config::get();
+ $samlConfig = json_decode($config->{self::CONFIG_KEY} ?? '{}', true);
+
+ return [
+ 'entityId' => $samlConfig['entityId'] ?? '',
+ 'assertionConsumerService' => $samlConfig['assertionConsumerService'] ?? '',
+ 'singleLogoutService' => $samlConfig['singleLogoutService'] ?? '',
+ 'nameIdFormat' => $samlConfig['nameIdFormat'] ?? '',
+ 'x509cert' => $samlConfig['x509cert'] ?? '',
+ 'privateKey' => $samlConfig['privateKey'] ?? '',
+ 'security' => [
+ 'authnRequestsSigned' => $samlConfig['security']['authnRequestsSigned'] ?? false,
+ 'wantMessagesSigned' => $samlConfig['security']['wantMessagesSigned'] ?? false,
+ 'wantAssertionsSigned' => $samlConfig['security']['wantAssertionsSigned'] ?? false,
+ ],
+ ];
+ }
+
+ public function updateConfiguration(array $config): void
+ {
+ $existingConfig = $this->getConfiguration();
+ $updatedConfig = array_merge($existingConfig, $config);
+
+ $configInstance = Config::get();
+ $configInstance->{self::CONFIG_KEY} = json_encode($updatedConfig);
+ $configInstance->store(self::CONFIG_KEY, $configInstance->{self::CONFIG_KEY});
+ }
+} \ No newline at end of file