[Maintenance] Less referrer usage in static redirects

This commit is contained in:
Jan Goralski 2024-08-12 09:01:06 +02:00 committed by Grzegorz Sadowski
parent cc099118cd
commit dc61d08b21
No known key found for this signature in database
GPG key ID: EF87FF4E6E3BD364
15 changed files with 70 additions and 23 deletions

View file

@ -25,6 +25,7 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
@ -35,6 +36,7 @@ final class ResendOrderConfirmationEmailAction
private OrderEmailManagerInterface|ResendOrderConfirmationEmailDispatcherInterface $orderEmailManager,
private CsrfTokenManagerInterface $csrfTokenManager,
private RequestStack|SessionInterface $requestStackOrSession,
private ?RouterInterface $router = null,
) {
if ($this->requestStackOrSession instanceof SessionInterface) {
trigger_deprecation(
@ -63,6 +65,16 @@ final class ResendOrderConfirmationEmailAction
'The argument name $orderEmailManager is deprecated and will be renamed to $resendOrderConfirmationEmailDispatcher in Sylius 2.0.',
);
}
if (null === $this->router) {
trigger_deprecation(
'sylius/admin-bundle',
'1.14',
'Passing null as constructor argument for $router in %s is deprecated and will be prohibited in Sylius 2.0. Pass an instance of %s instead.',
self::class,
RouterInterface::class,
);
}
}
public function __invoke(Request $request): Response
@ -88,7 +100,7 @@ final class ResendOrderConfirmationEmailAction
->add('success', 'sylius.email.order_confirmation_resent')
;
return new RedirectResponse($request->headers->get('referer'));
return $this->redirect($request);
}
private function sendConfirmationEmailOrDispatchResendOrderConfirmation(OrderInterface $order): void
@ -99,4 +111,15 @@ final class ResendOrderConfirmationEmailAction
$this->orderEmailManager->dispatch($order);
}
}
private function redirect(Request $request): RedirectResponse
{
if (null === $this->router) {
return new RedirectResponse($request->headers->get('referer'));
}
$redirect = $request->attributes->get('_sylius', [])['redirect'] ?? 'referer';
return new RedirectResponse($this->router->generate($redirect));
}
}

View file

@ -72,7 +72,10 @@ final class CustomerShowMenuBuilder
$menu
->addChild('user_delete', [
'route' => 'sylius_admin_shop_user_delete',
'routeParameters' => ['id' => $customer->getUser()->getId()],
'routeParameters' => [
'id' => $customer->getUser()->getId(),
'customerId' => $customer->getId(),
],
])
->setAttribute('type', 'delete')
->setAttribute('resource_id', $customer->getUser()->getId())

View file

@ -23,5 +23,5 @@ sylius_admin_locale_delete:
_controller: sylius.controller.locale::deleteAction
_sylius:
section: admin
redirect: referer
redirect: sylius_admin_locale_index
permission: true

View file

@ -73,7 +73,7 @@ sylius_admin_order_cancel:
state_machine:
graph: sylius_order
transition: cancel
redirect: referer
redirect: sylius_admin_order_show
sylius_admin_order_payment_complete:
path: /orders/{orderId}/payments/{id}/complete
@ -91,7 +91,10 @@ sylius_admin_order_payment_complete:
state_machine:
graph: sylius_payment
transition: complete
redirect: referer
redirect:
route: sylius_admin_order_show
parameters:
id: $orderId
sylius_admin_order_payment_refund:
path: /orders/{orderId}/payments/{id}/refund
@ -108,7 +111,10 @@ sylius_admin_order_payment_refund:
state_machine:
graph: sylius_payment
transition: refund
redirect: referer
redirect:
route: sylius_admin_order_show
parameters:
id: $orderId
flash: sylius.payment.refunded
sylius_admin_order_shipment_ship:
@ -126,7 +132,7 @@ sylius_admin_order_shipment_ship:
state_machine:
graph: sylius_shipment
transition: ship
redirect: referer
redirect: sylius_admin_order_show
section: admin
permission: true
form: Sylius\Bundle\ShippingBundle\Form\Type\ShipmentShipType
@ -141,3 +147,5 @@ sylius_admin_order_resend_confirmation_email:
methods: [GET]
defaults:
_controller: Sylius\Bundle\AdminBundle\Action\ResendOrderConfirmationEmailAction
_sylius:
redirect: sylius_admin_order_show

View file

@ -25,5 +25,5 @@ sylius_admin_payment_complete:
state_machine:
graph: sylius_payment
transition: complete
redirect: referer
redirect: sylius_admin_payment_index
flash: sylius.payment.completed

View file

@ -38,7 +38,7 @@ sylius_admin_product_update:
_sylius:
section: admin
permission: true
redirect: referer
redirect: sylius_admin_product_update
repository:
method: findOneByIdHydrated
arguments: $id

View file

@ -26,7 +26,7 @@ sylius_admin_product_review_accept:
state_machine:
graph: sylius_product_review
transition: accept
redirect: referer
redirect: sylius_admin_product_review_index
flash: sylius.review.accept
sylius_admin_product_review_reject:
@ -39,5 +39,5 @@ sylius_admin_product_review_reject:
state_machine:
graph: sylius_product_review
transition: reject
redirect: referer
redirect: sylius_admin_product_review_index
flash: sylius.review.reject

View file

@ -78,7 +78,9 @@ sylius_admin_product_variant_bulk_delete:
_controller: sylius.controller.product_variant::bulkDeleteAction
_sylius:
section: admin
redirect: referer
redirect:
route: sylius_admin_product_variant_index
parameters: { productId: $productId }
permission: true
repository:
method: findById
@ -91,7 +93,9 @@ sylius_admin_product_variant_delete:
_controller: sylius.controller.product_variant::deleteAction
_sylius:
section: admin
redirect: referer
redirect:
route: sylius_admin_product_variant_index
parameters: { productId: $productId }
permission: true
repository:
method: findOneByIdAndProductId

View file

@ -86,7 +86,9 @@ sylius_admin_promotion_coupon_bulk_delete:
_controller: sylius.controller.promotion_coupon::bulkDeleteAction
_sylius:
section: admin
redirect: referer
redirect:
route: sylius_admin_promotion_coupon_index
parameters: { promotionId: $promotionId }
permission: true
paginate: false
repository:
@ -100,5 +102,7 @@ sylius_admin_promotion_coupon_delete:
_controller: sylius.controller.promotion_coupon::deleteAction
_sylius:
section: admin
redirect: referer
redirect:
route: sylius_admin_promotion_coupon_index
parameters: { promotionId: $promotionId }
permission: true

View file

@ -25,7 +25,7 @@ sylius_admin_shipment_ship:
state_machine:
graph: sylius_shipment
transition: ship
redirect: referer
redirect: sylius_admin_shipment_index
flash: sylius.shipment.shipped
form: Sylius\Bundle\ShippingBundle\Form\Type\ShipmentShipType

View file

@ -5,5 +5,7 @@ sylius_admin_shop_user_delete:
_controller: sylius.controller.shop_user::deleteAction
_sylius:
section: admin
redirect: referer
redirect:
route: sylius_admin_customer_show
parameters: { id: $customerId }
permission: true

View file

@ -47,6 +47,7 @@
<argument type="service" id="Sylius\Bundle\CoreBundle\MessageDispatcher\ResendOrderConfirmationEmailDispatcherInterface" />
<argument type="service" id="security.csrf.token_manager" />
<argument type="service" id="request_stack" />
<argument type="service" id="router" />
</service>
<service id="Sylius\Bundle\AdminBundle\Action\ResendShipmentConfirmationEmailAction" public="true">

View file

@ -69,7 +69,7 @@ class ProductTaxonController extends ResourceController
$productTaxonsPositions = $request->request->all('productTaxons');
if (!$this->shouldProductsPositionsBeUpdated($request, $productTaxonsPositions)) {
return $this->redirectHandler->redirectToReferer($configuration);
return $this->redirectHandler->redirectToIndex($configuration);
}
$maxPosition = $this->getMaxPosition($productTaxonsPositions);
@ -81,10 +81,10 @@ class ProductTaxonController extends ResourceController
$session = $request->getSession();
$session->getFlashBag()->add('error', $exception->getMessage());
return $this->redirectHandler->redirectToReferer($configuration);
return $this->redirectHandler->redirectToIndex($configuration);
}
return $this->redirectHandler->redirectToReferer($configuration);
return $this->redirectHandler->redirectToIndex($configuration);
}
/** @param array<int, string> $productTaxonPositions */

View file

@ -69,6 +69,8 @@ final class ContactController
$contactEmail = $channel->getContactEmail();
$redirectRoute = $this->getSyliusAttribute($request, 'redirect', 'referer');
if (null === $contactEmail) {
$errorMessage = $this->getSyliusAttribute(
$request,
@ -80,7 +82,7 @@ final class ContactController
$flashBag = $request->getSession()->getBag('flashes');
$flashBag->add('error', $errorMessage);
return new RedirectResponse($request->headers->get('referer'));
return new RedirectResponse($this->router->generate($redirectRoute));
}
$localeCode = $this->localeContext->getLocaleCode();
@ -96,8 +98,6 @@ final class ContactController
$flashBag = $request->getSession()->getBag('flashes');
$flashBag->add('success', $successMessage);
$redirectRoute = $this->getSyliusAttribute($request, 'redirect', 'referer');
return new RedirectResponse($this->router->generate($redirectRoute));
}

View file

@ -6,6 +6,8 @@ sylius_shop_user_request_verification_token:
methods: [POST]
defaults:
_controller: sylius.controller.shop_user::requestVerificationTokenAction
_sylius:
redirect: sylius_shop_account_dashboard
sylius_shop_user_verification:
path: /verify/{token}