zend-blog-3-backend
45 строк · 1.4 Кб
1<?php
2
3namespace App\ArgumentResolver;
4
5use App\DTO\ExternalUserDTO;
6use App\Utils\VerifyEmail;
7use Symfony\Component\HttpFoundation\Request;
8use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
9use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
10
11class ExternalUserValueResolver implements ArgumentValueResolverInterface
12{
13public function supports(Request $request, ArgumentMetadata $argument)
14{
15if (ExternalUserDTO::class !== $argument->getType()) {
16return false;
17}
18
19return $request->request->has('userData');
20}
21
22public 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;
32if (!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
43yield $dto;
44}
45}
46