diff options
Diffstat (limited to 'lib/classes/JsonApi/Routes/SAML/ConfigurationUpdate.php')
| -rw-r--r-- | lib/classes/JsonApi/Routes/SAML/ConfigurationUpdate.php | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/classes/JsonApi/Routes/SAML/ConfigurationUpdate.php b/lib/classes/JsonApi/Routes/SAML/ConfigurationUpdate.php new file mode 100644 index 0000000..7845d2d --- /dev/null +++ b/lib/classes/JsonApi/Routes/SAML/ConfigurationUpdate.php @@ -0,0 +1,35 @@ +<?php + +namespace JsonApi\Routes\SAML; + +use JsonApi\Errors\AuthorizationFailedException; +use JsonApi\Routes\Route; +use Psr\Http\Message\ResponseInterface as Response; +use Psr\Http\Message\ServerRequestInterface as Request; +use Studip\SAML\SetupInformation; + +class ConfigurationUpdate extends Route +{ + public function __invoke(Request $request, Response $response, array $args): Response + { + if (!$GLOBALS['perm']->have_perm('root')) { + throw new AuthorizationFailedException(); + } + + $data = $this->getJsonApiData($request); + $attributes = $data['attributes'] ?? []; + + $setupInformation = $this->container->get(SetupInformation::class); + $setupInformation->updateConfiguration($attributes); + + $updatedConfig = $setupInformation->getConfiguration(); + + return $this->jsonResponse($response, [ + 'data' => [ + 'type' => 'saml-configuration', + 'id' => '1', + 'attributes' => $updatedConfig, + ], + ]); + } +}
\ No newline at end of file |
