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\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;
}
);

View File

@ -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
];

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
* @package ModelSerializers
*/
final class SummitTrackChairSerializer extends SilverStripeSerializer
class SummitTrackChairSerializer extends SilverStripeSerializer
{
protected static $array_mappings = [
'SummitId' => '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;