Fix on speaker serializer

Added email obfuscation for non admin members

Change-Id: I8ad832f1cff807cd636377abc8d7d6f7d3ab0158
This commit is contained in:
Sebastian Marcet 2018-10-02 13:55:05 -03:00
parent d6dad95b48
commit 79353a59a4
2 changed files with 18 additions and 2 deletions

View File

@ -26,6 +26,14 @@ final class AdminPresentationSpeakerSerializer extends PresentationSpeakerSerial
'Notes' => 'notes:json_string'
];
/**
* @param PresentationSpeaker $speaker
* @return null|string|string[]
*/
protected function getSpeakerEmail(PresentationSpeaker $speaker){
return $speaker->getEmail();
}
/**
* @param null $expand
* @param array $fields
@ -41,7 +49,6 @@ final class AdminPresentationSpeakerSerializer extends PresentationSpeakerSerial
if(!$speaker instanceof PresentationSpeaker) return [];
$values = parent::serialize($expand, $fields, $relations, $params);
$values['email'] = $speaker->getEmail();
$summit = isset($params['summit'])? $params['summit']:null;
if(!is_null($summit)){

View File

@ -33,6 +33,15 @@ class PresentationSpeakerSerializer extends SilverStripeSerializer
'member',
];
/**
* @param PresentationSpeaker $speaker
* @return null|string|string[]
*/
protected function getSpeakerEmail(PresentationSpeaker $speaker){
$speaker_email = $speaker->getEmail();
return preg_replace('/(?<=.).(?=.*.)/u','*', $speaker_email);
}
/**
* @param null $expand
* @param array $fields
@ -48,7 +57,7 @@ class PresentationSpeakerSerializer extends SilverStripeSerializer
if(!$speaker instanceof PresentationSpeaker) return [];
$values = parent::serialize($expand, $fields, $relations, $params);
$values['email'] = $this->getSpeakerEmail($speaker);
$summit_id = isset($params['summit_id'])? intval($params['summit_id']):null;
$published = isset($params['published'])? intval($params['published']):true;
if(!is_null($summit_id)) {