vendor/dvdw/platform-choice/src/Storefront/Controller/DashboardController.php line 82

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Dvdw\PlatformChoice\Storefront\Controller;
  3. use Dvdw\PlatformChoice\System\SalesChannel\Struct\DashboardDomainExtension;
  4. use Shopware\Core\Checkout\Customer\SalesChannel\AbstractLogoutRoute;
  5. use Shopware\Core\Content\ProductExport\Exception\SalesChannelDomainNotFoundException;
  6. use Shopware\Core\Framework\Routing\Annotation\Since;
  7. use Shopware\Core\Framework\Validation\DataBag\RequestDataBag;
  8. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  9. use Shopware\Storefront\Controller\AuthController;
  10. use Shopware\Storefront\Controller\StorefrontController;
  11. use Shopware\Storefront\Framework\Routing\Annotation\NoStore;
  12. use Symfony\Component\HttpFoundation\RedirectResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. /**
  17.  * @Route(defaults={"_routeScope"={"storefront"}})
  18.  */
  19. class DashboardController extends StorefrontController
  20. {
  21.     private AuthController $decorated;
  22.     private AbstractLogoutRoute $logoutRoute;
  23.     public function __construct(
  24.         AuthController $decorated,
  25.         AbstractLogoutRoute $logoutRoute
  26.     )
  27.     {
  28.         $this->decorated $decorated;
  29.         $this->logoutRoute $logoutRoute;
  30.     }
  31.     public function getDecorated(): AuthController
  32.     {
  33.         return $this->decorated;
  34.     }
  35.     /**
  36.      * @Since("6.0.0.0")
  37.      * @Route("/account/login", name="frontend.account.login.page", methods={"GET"})
  38.      * @NoStore
  39.      */
  40.     public function loginPage(Request $requestRequestDataBag $dataSalesChannelContext $context): Response
  41.     {
  42.         return new RedirectResponse($this->getDashboardDomain($context));
  43.     }
  44.     /**
  45.      * @Since("6.3.4.1")
  46.      * @Route("/account/guest/login", name="frontend.account.guest.login.page", methods={"GET"})
  47.      * @NoStore
  48.      */
  49.     public function guestLoginPage(Request $requestSalesChannelContext $context): Response
  50.     {
  51.         return new RedirectResponse($this->getDashboardDomain($context));
  52.     }
  53.     /**
  54.      * @Since("6.0.0.0")
  55.      * @Route("/account/logout", name="frontend.account.logout.page", methods={"GET"})
  56.      */
  57.     public function logout(Request $requestSalesChannelContext $contextRequestDataBag $dataBag): Response
  58.     {
  59.         if ($context->getCustomer() === null) {
  60.             return $this->redirectToRoute('frontend.account.login.page');
  61.         }
  62.         $this->logoutRoute->logout($context$dataBag);
  63.         $url $this->getDashboardDomain($context);
  64.         return new RedirectResponse(rtrim($url'/') . '/account/profile');
  65.     }
  66.     /**
  67.      * @Since("6.1.0.0")
  68.      * @Route("/account/recover", name="frontend.account.recover.page", methods={"GET"})
  69.      */
  70.     public function recoverAccountForm(Request $requestSalesChannelContext $context): Response
  71.     {
  72.         $url $this->getDashboardDomain($context);
  73.         return new RedirectResponse(rtrim($url'/') . '/reset-password');
  74.     }
  75.     /**
  76.      * @Since("6.1.0.0")
  77.      * @Route("/account/recover/password", name="frontend.account.recover.password.page", methods={"GET"})
  78.      */
  79.     public function resetPasswordForm(Request $requestSalesChannelContext $context): Response
  80.     {
  81.         return $this->getDecorated()->resetPasswordForm($request$context);
  82.     }
  83.     private function getDashboardDomain(SalesChannelContext $context): string
  84.     {
  85.         /** @var DashboardDomainExtension|null $dashboardDomain */
  86.         $dashboardDomain $context->getExtension(DashboardDomainExtension::KEY);
  87.         if ($dashboardDomain === null) {
  88.             throw new SalesChannelDomainNotFoundException('Dashboard');
  89.         }
  90.         return $dashboardDomain->getDomain();
  91.     }
  92. }