zend-blog-3-backend

Форк
0
/
ExternalUserValueResolver.php 
45 строк · 1.4 Кб
1
<?php
2

3
namespace App\ArgumentResolver;
4

5
use App\DTO\ExternalUserDTO;
6
use App\Utils\VerifyEmail;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
9
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
10

11
class ExternalUserValueResolver implements ArgumentValueResolverInterface
12
{
13
    public function supports(Request $request, ArgumentMetadata $argument)
14
    {
15
        if (ExternalUserDTO::class !== $argument->getType()) {
16
            return false;
17
        }
18

19
        return $request->request->has('userData');
20
    }
21

22
    public function resolve(Request $request, ArgumentMetadata $argument)
23
    {
24
        $data = $request->request->get('userData');
25
        $dto = new ExternalUserDTO();
26

27
        $dto->id = $data['id'];
28
        $dto->dataProvider = $data['dataProvider'];
29
        $dto->rawData = $data['rawData'];
30

31
        $email = $data['email'] ?? null;
32
        if (!empty($email)) {
33
            $dto->email = VerifyEmail::normalize($email);
34
        }
35

36
        $dto->username = $data['username'] ?? null;
37
        $dto->displayName = $data['displayName'] ?? null;
38
        $dto->firstName = $data['firstName'] ?? null;
39
        $dto->lastName = $data['lastName'] ?? null;
40
        $dto->gender = $data['gender'] ?? null;
41
        $dto->avatar = $data['avatar'] ?? null;
42

43
        yield $dto;
44
    }
45
}
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.