Fix on track chairs serializer

Updated member serializer rights

Change-Id: I5255a7baf9e115652d026249be7c893d34aca312
Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
smarcet 2021-07-15 17:22:44 -03:00
parent 08d4973336
commit 08cb3cbe52
4 changed files with 46 additions and 3 deletions

View File

@ -14,6 +14,7 @@
use App\Http\Exceptions\HTTP403ForbiddenException; use App\Http\Exceptions\HTTP403ForbiddenException;
use App\Http\Utils\EpochCellFormatter; use App\Http\Utils\EpochCellFormatter;
use App\Models\Foundation\Main\IGroup;
use App\Models\Foundation\Summit\Repositories\ISummitTrackChairRepository; use App\Models\Foundation\Summit\Repositories\ISummitTrackChairRepository;
use App\Services\Model\ITrackChairService; use App\Services\Model\ITrackChairService;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Input;
@ -41,7 +42,6 @@ final class OAuth2SummitTrackChairsApiController
*/ */
private $summit_repository; private $summit_repository;
/** /**
* @var ITrackChairService * @var ITrackChairService
*/ */
@ -118,6 +118,16 @@ final class OAuth2SummitTrackChairsApiController
return $filter; return $filter;
}, },
function () { 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; return SerializerRegistry::SerializerType_Public;
} }
); );

View File

@ -219,6 +219,7 @@ final class SerializerRegistry
$this->registry['SummitTrackChair'] = [ $this->registry['SummitTrackChair'] = [
self::SerializerType_Public => SummitTrackChairSerializer::class, self::SerializerType_Public => SummitTrackChairSerializer::class,
self::SerializerType_Private => AdminSummitTrackChairSerializer::class,
self::SerializerType_CSV => SummitTrackChairCSVSerializer::class self::SerializerType_CSV => SummitTrackChairCSVSerializer::class
]; ];

View File

@ -0,0 +1,24 @@
<?php namespace ModelSerializers;
/**
* Copyright 2021 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
/**
* Class AdminSummitTrackChairSerializer
* @package ModelSerializers
*/
class AdminSummitTrackChairSerializer extends SummitTrackChairSerializer
{
protected function getMemberSerializerType():string{
return SerializerRegistry::SerializerType_Private;
}
}

View File

@ -19,7 +19,7 @@ use ModelSerializers\SilverStripeSerializer;
* Class SummitTrackChairSerializer * Class SummitTrackChairSerializer
* @package ModelSerializers * @package ModelSerializers
*/ */
final class SummitTrackChairSerializer extends SilverStripeSerializer class SummitTrackChairSerializer extends SilverStripeSerializer
{ {
protected static $array_mappings = [ protected static $array_mappings = [
'SummitId' => 'summit_id:json_int', 'SummitId' => 'summit_id:json_int',
@ -30,6 +30,10 @@ final class SummitTrackChairSerializer extends SilverStripeSerializer
'categories', 'categories',
]; ];
protected function getMemberSerializerType():string{
return SerializerRegistry::SerializerType_Public;
}
/** /**
* @param null $expand * @param null $expand
* @param array $fields * @param array $fields
@ -73,7 +77,11 @@ final class SummitTrackChairSerializer extends SilverStripeSerializer
if ($track_chair->getMemberId() > 0) { if ($track_chair->getMemberId() > 0) {
unset($values['member_id']); 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; break;