From 08cb3cbe52970ed6d3c45d50542135fd5055a4ff Mon Sep 17 00:00:00 2001 From: smarcet Date: Thu, 15 Jul 2021 17:22:44 -0300 Subject: [PATCH] Fix on track chairs serializer Updated member serializer rights Change-Id: I5255a7baf9e115652d026249be7c893d34aca312 Signed-off-by: smarcet --- .../OAuth2SummitTrackChairsApiController.php | 12 +++++++++- app/ModelSerializers/SerializerRegistry.php | 1 + .../AdminSummitTrackChairSerializer.php | 24 +++++++++++++++++++ .../SummitTrackChairSerializer.php | 12 ++++++++-- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 app/ModelSerializers/Summit/Presentation/AdminSummitTrackChairSerializer.php diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php index b21b7f9d..e754cbce 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitTrackChairsApiController.php @@ -14,6 +14,7 @@ use App\Http\Exceptions\HTTP403ForbiddenException; use App\Http\Utils\EpochCellFormatter; +use App\Models\Foundation\Main\IGroup; use App\Models\Foundation\Summit\Repositories\ISummitTrackChairRepository; use App\Services\Model\ITrackChairService; use Illuminate\Support\Facades\Input; @@ -41,7 +42,6 @@ final class OAuth2SummitTrackChairsApiController */ private $summit_repository; - /** * @var ITrackChairService */ @@ -118,6 +118,16 @@ final class OAuth2SummitTrackChairsApiController return $filter; }, function () { + $current_user = $this->resource_server_context->getCurrentUser(); + if(!is_null($current_user)){ + if( + $current_user->isOnGroup(IGroup::Administrators) || + $current_user->isOnGroup(IGroup::SuperAdmins) || + $current_user->isOnGroup(IGroup::TrackChairsAdmins) || + $current_user->isOnGroup(IGroup::SummitAdministrators) + ) + return SerializerRegistry::SerializerType_Private; + } return SerializerRegistry::SerializerType_Public; } ); diff --git a/app/ModelSerializers/SerializerRegistry.php b/app/ModelSerializers/SerializerRegistry.php index f346fbb1..1c4a4ce2 100644 --- a/app/ModelSerializers/SerializerRegistry.php +++ b/app/ModelSerializers/SerializerRegistry.php @@ -219,6 +219,7 @@ final class SerializerRegistry $this->registry['SummitTrackChair'] = [ self::SerializerType_Public => SummitTrackChairSerializer::class, + self::SerializerType_Private => AdminSummitTrackChairSerializer::class, self::SerializerType_CSV => SummitTrackChairCSVSerializer::class ]; diff --git a/app/ModelSerializers/Summit/Presentation/AdminSummitTrackChairSerializer.php b/app/ModelSerializers/Summit/Presentation/AdminSummitTrackChairSerializer.php new file mode 100644 index 00000000..863beaaa --- /dev/null +++ b/app/ModelSerializers/Summit/Presentation/AdminSummitTrackChairSerializer.php @@ -0,0 +1,24 @@ + 'summit_id:json_int', @@ -30,6 +30,10 @@ final class SummitTrackChairSerializer extends SilverStripeSerializer 'categories', ]; + protected function getMemberSerializerType():string{ + return SerializerRegistry::SerializerType_Public; + } + /** * @param null $expand * @param array $fields @@ -73,7 +77,11 @@ final class SummitTrackChairSerializer extends SilverStripeSerializer if ($track_chair->getMemberId() > 0) { unset($values['member_id']); - $values['member'] = SerializerRegistry::getInstance()->getSerializer($track_chair->getMember())->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation)); + $values['member'] = SerializerRegistry::getInstance()->getSerializer + ( + $track_chair->getMember(), + $this->getMemberSerializerType() + )->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation)); } } break;