Completed
Pull Request — master (#200)
by Mateusz
02:56
created

LoggedInCustomerDetailsAction::__invoke()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 15
rs 9.4285
cc 1
eloc 9
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sylius\ShopApiPlugin\Controller\Customer;
6
7
use FOS\RestBundle\View\View;
8
use FOS\RestBundle\View\ViewHandlerInterface;
9
use Sylius\Component\Core\Model\ShopUserInterface;
10
use Symfony\Component\HttpFoundation\Request;
11
use Symfony\Component\HttpFoundation\Response;
12
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
13
use Webmozart\Assert\Assert;
14
15
final class LoggedInCustomerDetailsAction
16
{
17
    /**
18
     * @var ViewHandlerInterface
19
     */
20
    private $viewHandler;
21
22
    /**
23
     * @var TokenStorageInterface
24
     */
25
    private $tokenStorage;
26
27
    /**
28
     * @param ViewHandlerInterface $viewHandler
29
     * @param TokenStorageInterface $tokenStorage
30
     */
31
    public function __construct(ViewHandlerInterface $viewHandler, TokenStorageInterface $tokenStorage)
32
    {
33
        $this->viewHandler = $viewHandler;
34
        $this->tokenStorage = $tokenStorage;
35
    }
36
37
    public function __invoke(Request $request): Response
38
    {
39
        /** @var ShopUserInterface $user */
40
        $user = $this->tokenStorage->getToken()->getUser();
41
42
        Assert::isInstanceOf($user, ShopUserInterface::class);
43
44
        $customer = $user->getCustomer();
45
46
        return $this->viewHandler->handle(View::create([
47
            'firstName' => $customer->getFirstName(),
48
            'lastName' => $customer->getLastName(),
49
            'email' => $customer->getEmail(),
50
        ], Response::HTTP_OK));
51
    }
52
}
53