src/Controller/UserApiController.php line 76

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Services\UserService;
  4. use Exception;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\JsonResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. use Webmozart\Assert\Assert;
  12. /**
  13.  * Class UserApiController
  14.  * @package App\Controller
  15.  */
  16. class UserApiController extends AbstractController
  17. {
  18.     private UserService $userService;
  19.     private UserPasswordEncoderInterface $passwordEncoder;
  20.     /** @var TranslatorInterface */
  21.     private TranslatorInterface $translator;
  22.     public function __construct(UserService $userServiceUserPasswordEncoderInterface $passwordEncoderTranslatorInterface $translator)
  23.     {
  24.         $this->userService $userService;
  25.         $this->passwordEncoder $passwordEncoder;
  26.         $this->translator $translator;
  27.     }
  28.     /**
  29.      * @Route(path="/api/{version}/user/", methods={"GET"})
  30.      * @param Request $request
  31.      * @return JsonResponse
  32.      */
  33.     public function checkRemoteUser(Request $request): JsonResponse
  34.     {
  35.         $response = [
  36.             "success" => false,
  37.         ];
  38.         try {
  39.             $username $request->request->get("username""");
  40.             $password $request->request->get("password""");
  41.             Assert::notEmpty($username$this->translator->trans("username is required"));
  42.             Assert::notEmpty($password$this->translator->trans("password is required"));
  43.             $user $this->userService->getByUsername($username);
  44.             Assert::notNull($user$this->translator->trans("User not found"));
  45.             Assert::false($user->getIsDeleted(), $this->translator->trans("User is deleted"));
  46.             Assert::false($user->getIsBlocked(), $this->translator->trans("User is blocked"));
  47.             $isPasswordValid $this->passwordEncoder->isPasswordValid($user$password);
  48.             Assert::true($isPasswordValid$this->translator->trans("Password not valid"));
  49.             $response = [
  50.                 "success" => true,
  51.                 "data" => [
  52.                     "username" => $user->getUsername(),
  53.                     "roles" => $user->getRoles(),
  54.                 ],
  55.             ];
  56.         } catch (Exception $e) {
  57.             $response["message"] = $e->getMessage();
  58.         }
  59.         return new JsonResponse($response);
  60.     }
  61.     /**
  62.      * @Route(path="/api/{version}/user/byToken", methods={"GET", "POST"})
  63.      * @param Request $request
  64.      * @return JsonResponse
  65.      */
  66.     public function checkRemoteUserByToken(Request $request): JsonResponse
  67.     {
  68.         $response = [
  69.             "success" => false,
  70.         ];
  71.         try {
  72.             if ($request->query->has("user_id")) {
  73.                 $userId $request->query->get("user_id""");
  74.             }
  75.             if ($request->request->has("user_id")) {
  76.                 $userId $request->request->get("user_id""");
  77.             }
  78.             $user $this->userService->getById($userId);
  79.             Assert::notNull($user$this->translator->trans("User not found"));
  80.             Assert::false($user->getIsDeleted(), $this->translator->trans("User is deleted"));
  81.             Assert::false($user->getIsBlocked(), $this->translator->trans("User is blocked"));
  82.             $cashdesk = [];
  83.             if (!empty($user->getCurrentCashdesk())) {
  84.                 $cashdesk = [
  85.                     "id" => $user->getCurrentCashdesk()->getId(),
  86.                     "title" => $user->getCurrentCashdesk()->getTitle(),
  87.                 ];
  88.             }
  89.             $response = [
  90.                 "success" => true,
  91.                 "data" => [
  92.                     "id" => $user->getId(),
  93.                     "username" => $user->getUsername(),
  94.                     "roles" => $user->getRoles(),
  95.                     "balance" => 0,
  96.                     "cashdesk" => $cashdesk,
  97.                 ],
  98.             ];
  99.             if (!is_null($user->getCurrentCashdesk())) {
  100.                 $response["data"]["balance"] = $user->getCurrentCashdesk()->getBalance();
  101.             }
  102.         } catch (Exception $e) {
  103.             $response["message"] = $e->getMessage();
  104.         }
  105.         return new JsonResponse($response);
  106.     }
  107. }