Issues (3641)

AgentAccessTokenRestResponseBuilder.php (1 issue)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace Spryker\Glue\AgentAuthRestApi\Processor\RestResponseBuilder;
9
10
use Generated\Shared\Transfer\CustomerAutocompleteResponseTransfer;
11
use Generated\Shared\Transfer\OauthResponseTransfer;
12
use Generated\Shared\Transfer\RestAgentAccessTokensAttributesTransfer;
13
use Generated\Shared\Transfer\RestAgentCustomerImpersonationAccessTokensAttributesTransfer;
14
use Generated\Shared\Transfer\RestAgentCustomerSearchAttributesTransfer;
15
use Generated\Shared\Transfer\RestAgentCustomerSearchCustomersAttributesTransfer;
16
use Generated\Shared\Transfer\RestErrorMessageTransfer;
17
use Spryker\Glue\AgentAuthRestApi\AgentAuthRestApiConfig;
18
use Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceBuilderInterface;
19
use Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface;
20
use Spryker\Glue\GlueApplication\Rest\Request\Data\Page;
21
use Spryker\Glue\GlueApplication\Rest\Request\Data\RestRequestInterface;
22
use Symfony\Component\HttpFoundation\Response;
23
24
class AgentAccessTokenRestResponseBuilder implements AgentAccessTokenRestResponseBuilderInterface
25
{
26
    /**
27
     * @var \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceBuilderInterface
28
     */
29
    protected $restResourceBuilder;
30
31
    /**
32
     * @param \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResourceBuilderInterface $restResourceBuilder
33
     */
34
    public function __construct(RestResourceBuilderInterface $restResourceBuilder)
35
    {
36
        $this->restResourceBuilder = $restResourceBuilder;
37
    }
38
39
    /**
40
     * @param \Generated\Shared\Transfer\OauthResponseTransfer $oauthResponseTransfer
41
     *
42
     * @return \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface
43
     */
44
    public function createAgentAccessTokensRestResponse(OauthResponseTransfer $oauthResponseTransfer): RestResponseInterface
45
    {
46
        $restAgentAccessTokensAttributesTransfer = (new RestAgentAccessTokensAttributesTransfer())
47
            ->fromArray($oauthResponseTransfer->toArray(), true);
48
49
        $accessTokenResource = $this->restResourceBuilder
50
            ->createRestResource(
51
                AgentAuthRestApiConfig::RESOURCE_AGENT_ACCESS_TOKENS,
52
                null,
53
                $restAgentAccessTokensAttributesTransfer,
54
            );
55
56
        return $this->restResourceBuilder
57
            ->createRestResponse()
58
            ->addResource($accessTokenResource);
59
    }
60
61
    /**
62
     * @param \Generated\Shared\Transfer\OauthResponseTransfer $oauthResponseTransfer
63
     *
64
     * @return \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface
65
     */
66
    public function createAgentCustomerImpersonationAccessTokensRestResponse(OauthResponseTransfer $oauthResponseTransfer): RestResponseInterface
67
    {
68
        $restAgentCustomerImpersonationAccessTokensAttributesTransfer = (new RestAgentCustomerImpersonationAccessTokensAttributesTransfer())
69
            ->fromArray($oauthResponseTransfer->toArray(), true);
70
71
        $accessTokenResource = $this->restResourceBuilder
72
            ->createRestResource(
73
                AgentAuthRestApiConfig::RESOURCE_AGENT_CUSTOMER_IMPERSONATION_ACCESS_TOKENS,
74
                null,
75
                $restAgentCustomerImpersonationAccessTokensAttributesTransfer,
76
            );
77
78
        return $this->restResourceBuilder
79
            ->createRestResponse()
80
            ->addResource($accessTokenResource);
81
    }
82
83
    /**
84
     * @param \Generated\Shared\Transfer\CustomerAutocompleteResponseTransfer $customerAutocompleteResponseTransfer
85
     * @param \Spryker\Glue\GlueApplication\Rest\Request\Data\RestRequestInterface $restRequest
86
     *
87
     * @return \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface
88
     */
89
    public function createAgentCustomerSearchRestResponse(
90
        CustomerAutocompleteResponseTransfer $customerAutocompleteResponseTransfer,
91
        RestRequestInterface $restRequest
92
    ): RestResponseInterface {
93
        $agentCustomerSearchRestResponse = $this->restResourceBuilder->createRestResponse(
94
            $customerAutocompleteResponseTransfer->getPagination()->getNbResults(),
95
            $customerAutocompleteResponseTransfer->getPagination()->getMaxPerPage(),
96
        );
97
98
        $restAgentCustomerSearchAttributesTransfer = new RestAgentCustomerSearchAttributesTransfer();
99
        foreach ($customerAutocompleteResponseTransfer->getCustomers() as $customerTransfer) {
100
            $restAgentCustomerSearchAttributesTransfer->addCustomer(
101
                (new RestAgentCustomerSearchCustomersAttributesTransfer())
102
                    ->fromArray($customerTransfer->toArray(), true),
103
            );
104
        }
105
106
        if (!$restRequest->getPage()) {
107
            $restRequest->setPage(new Page(0, $customerAutocompleteResponseTransfer->getPagination()->getMaxPerPage()));
0 ignored issues
show
Deprecated Code introduced by
The class Spryker\Glue\GlueApplica...\Rest\Request\Data\Page has been deprecated: Will be removed without replacement. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

107
            $restRequest->setPage(/** @scrutinizer ignore-deprecated */ new Page(0, $customerAutocompleteResponseTransfer->getPagination()->getMaxPerPage()));
Loading history...
108
        }
109
110
        return $agentCustomerSearchRestResponse->addResource(
111
            $this->restResourceBuilder->createRestResource(
112
                AgentAuthRestApiConfig::RESOURCE_AGENT_CUSTOMER_SEARCH,
113
                null,
114
                $restAgentCustomerSearchAttributesTransfer,
115
            ),
116
        );
117
    }
118
119
    /**
120
     * @return \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface
121
     */
122
    public function createInvalidCredentialsErrorResponse(): RestResponseInterface
123
    {
124
        $restErrorMessageTransfer = (new RestErrorMessageTransfer())
125
            ->setCode(AgentAuthRestApiConfig::RESPONSE_CODE_INVALID_LOGIN)
126
            ->setStatus(Response::HTTP_UNAUTHORIZED)
127
            ->setDetail(AgentAuthRestApiConfig::RESPONSE_DETAIL_INVALID_LOGIN);
128
129
        return $this->restResourceBuilder
130
            ->createRestResponse()
131
            ->addError($restErrorMessageTransfer);
132
    }
133
134
    /**
135
     * @return \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface
136
     */
137
    public function createFailedToImpersonateCustomerErrorResponse(): RestResponseInterface
138
    {
139
        $restErrorMessageTransfer = (new RestErrorMessageTransfer())
140
            ->setCode(AgentAuthRestApiConfig::RESPONSE_CODE_FAILED_TO_IMPERSONATE_CUSTOMER)
141
            ->setStatus(Response::HTTP_UNAUTHORIZED)
142
            ->setDetail(AgentAuthRestApiConfig::RESPONSE_DETAIL_FAILED_TO_IMPERSONATE_CUSTOMER);
143
144
        return $this->restResourceBuilder
145
            ->createRestResponse()
146
            ->addError($restErrorMessageTransfer);
147
    }
148
149
    /**
150
     * @return \Spryker\Glue\GlueApplication\Rest\JsonApi\RestResponseInterface
151
     */
152
    public function createActionAvailableForAgentsOnlyErrorResponse(): RestResponseInterface
153
    {
154
        $restErrorMessageTransfer = (new RestErrorMessageTransfer())
155
            ->setCode(AgentAuthRestApiConfig::RESPONSE_CODE_AGENT_ONLY)
156
            ->setStatus(Response::HTTP_UNAUTHORIZED)
157
            ->setDetail(AgentAuthRestApiConfig::RESPONSE_DETAIL_AGENT_ONLY);
158
159
        return $this->restResourceBuilder
160
            ->createRestResponse()
161
            ->addError($restErrorMessageTransfer);
162
    }
163
}
164