Skip to content
Snippets Groups Projects
Commit 1848eaae authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

fix self link to status groups by implementing route /status-groups/{id}, fixes #3357

Closes #3357

Merge request studip/studip!2284
parent 0a496e69
No related branches found
No related tags found
No related merge requests found
...@@ -115,6 +115,8 @@ class RouteMap ...@@ -115,6 +115,8 @@ class RouteMap
$group->get('/config-values/{id}', Routes\ConfigValues\ConfigValuesShow::class); $group->get('/config-values/{id}', Routes\ConfigValues\ConfigValuesShow::class);
$group->patch('/config-values/{id}', Routes\ConfigValues\ConfigValuesUpdate::class); $group->patch('/config-values/{id}', Routes\ConfigValues\ConfigValuesUpdate::class);
$group->get('/status-groups/{id}', Routes\StatusgroupShow::class);
$this->addAuthenticatedBlubberRoutes($group); $this->addAuthenticatedBlubberRoutes($group);
$this->addAuthenticatedConsultationRoutes($group); $this->addAuthenticatedConsultationRoutes($group);
$this->addAuthenticatedContactsRoutes($group); $this->addAuthenticatedContactsRoutes($group);
......
<?php
namespace JsonApi\Routes;
use JsonApi\Errors\AuthorizationFailedException;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use JsonApi\JsonApiController;
use JsonApi\Errors\RecordNotFoundException;
class StatusgroupShow extends JsonApiController
{
protected $allowedIncludePaths = [
'range'
];
public function __invoke(Request $request, Response $response, $args)
{
$group = \Statusgruppen::find($args['id']);
if (!$group) {
throw new RecordNotFoundException();
}
$user = $this->getUser($request);
$range = $group->range;
if ($range && !$range->isAccessibleToUser($user->id)) {
throw new AuthorizationFailedException();
}
return $this->getContentResponse($group);
}
}
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
* @property BlubberStatusgruppeThread $blubberthread has_one BlubberStatusgruppeThread * @property BlubberStatusgruppeThread $blubberthread has_one BlubberStatusgruppeThread
* @property SimpleORMapCollection|CourseDate[] $dates has_and_belongs_to_many CourseDate * @property SimpleORMapCollection|CourseDate[] $dates has_and_belongs_to_many CourseDate
* @property mixed $children additional field * @property mixed $children additional field
* @property-read Range|null $range
*/ */
class Statusgruppen extends SimpleORMap implements PrivacyObject class Statusgruppen extends SimpleORMap implements PrivacyObject
{ {
...@@ -96,6 +97,12 @@ class Statusgruppen extends SimpleORMap implements PrivacyObject ...@@ -96,6 +97,12 @@ class Statusgruppen extends SimpleORMap implements PrivacyObject
$config['additional_fields']['children'] = true; $config['additional_fields']['children'] = true;
$config['additional_fields']['range'] = [
'get' => function (Statusgruppen $group): ?Range {
return RangeFactory::find($group->range_id);
},
];
$config['default_values']['position'] = null; $config['default_values']['position'] = null;
$config['registered_callbacks']['before_store'][] = 'cbAddPosition'; $config['registered_callbacks']['before_store'][] = 'cbAddPosition';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment