Completed
Pull Request — 2.1 (#1176)
by Greg
09:47 queued 29s
created
src/SWP/Bundle/CoreBundle/Controller/AuthController.php 1 patch
Unused Use Statements   -85 removed lines patch added patch discarded remove patch
@@ -133,88 +133,3 @@
 block discarded – undo
133 133
                 return new SingleResourceResponse([
134 134
                     'status' => 401,
135 135
                     'message' => <<<'MESSAGE'
136
-Unauthorized (user not found in Superdesk). 
137
-Make sure that Publisher can talk to Superdesk instance. Set it's address in "SUPERDESK_SERVERS" environment variable.
138
-MESSAGE,
139
-                ], new ResponseContext(401));
140
-            }
141
-
142
-            $publisherUser = $userProvider->findOneByEmail($superdeskUser['email']);
143
-            if (null === $publisherUser) {
144
-                try {
145
-                    $publisherUser = $userProvider->loadUserByUsername($superdeskUser['username']);
146
-                } catch (UsernameNotFoundException $e) {
147
-                    $publisherUser = null;
148
-                }
149
-            }
150
-
151
-            if (null === $publisherUser) {
152
-                /** @var UserInterface $publisherUser */
153
-                $publisherUser = $userManager->createUser();
154
-                $publisherUser->setUsername($superdeskUser['username']);
155
-                $publisherUser->setEmail($superdeskUser['email']);
156
-                $publisherUser->setRoles(['ROLE_INTERNAL_API']);
157
-                $publisherUser->setFirstName(\array_key_exists('first_name', $superdeskUser) ? $superdeskUser['first_name'] : 'Anon.');
158
-                $publisherUser->setLastName(\array_key_exists('last_name', $superdeskUser) ? $superdeskUser['last_name'] : '');
159
-                $publisherUser->setPassword(password_hash(random_bytes(36), PASSWORD_BCRYPT));
160
-                $publisherUser->setEnabled(true);
161
-                $userManager->updateUser($publisherUser);
162
-            }
163
-
164
-            if (null !== $publisherUser) {
165
-                return $this->returnApiTokenResponse($publisherUser, str_replace('Basic ', '', $formData['token']));
166
-            }
167
-        }
168
-
169
-        return new SingleResourceResponse([
170
-            'status' => 401,
171
-            'message' => 'Unauthorized',
172
-        ], new ResponseContext(401));
173
-    }
174
-
175
-    private function returnApiTokenResponse(UserInterface $user, string $token = null): SingleResourceResponseInterface
176
-    {
177
-        /** @var ApiKeyInterface $apiKey */
178
-        $apiKey = $this->generateOrGetApiKey($user, $token);
179
-
180
-        return new SingleResourceResponse([
181
-            'token' => [
182
-                'api_key' => $apiKey->getApiKey(),
183
-                'valid_to' => $apiKey->getValidTo(),
184
-            ],
185
-            'user' => $user,
186
-        ]);
187
-    }
188
-
189
-    private function generateOrGetApiKey(UserInterface $user, $token): ?ApiKeyInterface
190
-    {
191
-        $apiKey = null;
192
-        if (null !== $token) {
193
-            $apiKey = $this->apiKeyRepository->getValidToken($token)->getQuery()->getOneOrNullResult();
194
-        } else {
195
-            $validKeys = $this->apiKeyRepository->getValidTokenForUser($user)->getQuery()->getResult();
196
-            if (count($validKeys) > 0) {
197
-                $apiKey = reset($validKeys);
198
-            }
199
-        }
200
-
201
-        if (null === $apiKey) {
202
-            $apiKey = $this->apiKeyFactory->create($user, $token);
203
-
204
-            try {
205
-                $lock = $this->lockFactory->createLock(md5(json_encode(['type' => 'user_api_key', 'user' => $user->getId()])), 2);
206
-                if (!$lock->acquire()) {
207
-                    throw new RuntimeException('Other api key is created right now for this user');
208
-                }
209
-                $this->apiKeyRepository->add($apiKey);
210
-                $lock->release();
211
-            } catch (RuntimeException $e) {
212
-                sleep(2);
213
-
214
-                return $this->generateOrGetApiKey($user, $token);
215
-            }
216
-        }
217
-
218
-        return $apiKey;
219
-    }
220
-}
Please login to merge, or discard this patch.