src/Controller/Api/LoginController.php line 26

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Api;
  4. use App\Repository\ClientRepository;
  5. use App\Service\TokenService;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. class LoginController
  10. {
  11.     private ClientRepository $clientRepository;
  12.     private TokenService $tokenService;
  13.     public function __construct(
  14.         ClientRepository $clientRepository,
  15.         TokenService $tokenService
  16.     ) {
  17.         $this->clientRepository $clientRepository;
  18.         $this->tokenService $tokenService;
  19.     }
  20.     public function postLoginAction(Request $request): JsonResponse
  21.     {
  22.         $login $request->get('login');
  23.         $password $request->get('password');
  24.         if (!$login || !$password) {
  25.             return new JsonResponse('Invalid params'Response::HTTP_CONFLICT);
  26.         }
  27.         $client $this->clientRepository->findOneByLogin($login);
  28.         if (!$client) {
  29.             return new JsonResponse('Invalid credentials'Response::HTTP_FORBIDDEN);
  30.         }
  31.         if ($client->getPassword() !== $password) {
  32.             return new JsonResponse('Invalid credentials'Response::HTTP_FORBIDDEN);
  33.         }
  34.         return new JsonResponse(
  35.             [
  36.                 'userToken' => $this->tokenService->generateToken($client),
  37.                 'userData' => [
  38.                     'clientId' => $client->getUserNumber(),
  39.                     'salutation' => $client->getSalutation(),
  40.                     'firstName' => $client->getFirstName(),
  41.                     'lastName' => $client->getLastName(),
  42.                     'companyName' => $client->getCompanyName(),
  43.                     'stateOrProvince' => $client->getStateOrProvince(),
  44.                     'address' => $client->getAddress(),
  45.                     'city' => $client->getCity(),
  46.                     'country' => $client->getCountry(),
  47.                     'callPhone' => $client->getCallNumber(),
  48.                     'phoneNumber' => $client->getPhoneNumber(),
  49.                     'fax' => $client->getFax(),
  50.                     'email' => $client->getEmail()
  51.                 ]
  52.             ]
  53.         );
  54.     }
  55. }