Mercurial > hg > isophonics-drupal-site
annotate core/modules/serialization/src/EventSubscriber/UserRouteAlterSubscriber.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\serialization\EventSubscriber; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Core\Routing\RouteBuildEvent; |
Chris@0 | 6 use Drupal\Core\Routing\RoutingEvents; |
Chris@0 | 7 use Symfony\Component\EventDispatcher\EventSubscriberInterface; |
Chris@0 | 8 |
Chris@0 | 9 /** |
Chris@0 | 10 * Alters user authentication routes to support additional serialization formats. |
Chris@0 | 11 */ |
Chris@0 | 12 class UserRouteAlterSubscriber implements EventSubscriberInterface { |
Chris@0 | 13 |
Chris@0 | 14 /** |
Chris@0 | 15 * The available serialization formats. |
Chris@0 | 16 * |
Chris@0 | 17 * @var array |
Chris@0 | 18 */ |
Chris@0 | 19 protected $serializerFormats = []; |
Chris@0 | 20 |
Chris@0 | 21 /** |
Chris@0 | 22 * UserRouteAlterSubscriber constructor. |
Chris@0 | 23 * |
Chris@0 | 24 * @param array $serializer_formats |
Chris@0 | 25 * The available serializer formats. |
Chris@0 | 26 */ |
Chris@0 | 27 public function __construct(array $serializer_formats) { |
Chris@0 | 28 $this->serializerFormats = $serializer_formats; |
Chris@0 | 29 } |
Chris@0 | 30 |
Chris@0 | 31 /** |
Chris@0 | 32 * {@inheritdoc} |
Chris@0 | 33 */ |
Chris@0 | 34 public static function getSubscribedEvents() { |
Chris@0 | 35 $events[RoutingEvents::ALTER][] = 'onRoutingAlterAddFormats'; |
Chris@0 | 36 return $events; |
Chris@0 | 37 } |
Chris@0 | 38 |
Chris@0 | 39 /** |
Chris@0 | 40 * Adds supported formats to the user authentication HTTP routes. |
Chris@0 | 41 * |
Chris@0 | 42 * @param \Drupal\Core\Routing\RouteBuildEvent $event |
Chris@0 | 43 * The event to process. |
Chris@0 | 44 */ |
Chris@0 | 45 public function onRoutingAlterAddFormats(RouteBuildEvent $event) { |
Chris@0 | 46 $route_names = [ |
Chris@0 | 47 'user.login_status.http', |
Chris@0 | 48 'user.login.http', |
Chris@0 | 49 'user.logout.http', |
Chris@0 | 50 'user.pass.http', |
Chris@0 | 51 ]; |
Chris@0 | 52 $routes = $event->getRouteCollection(); |
Chris@0 | 53 foreach ($route_names as $route_name) { |
Chris@0 | 54 if ($route = $routes->get($route_name)) { |
Chris@0 | 55 $formats = explode('|', $route->getRequirement('_format')); |
Chris@0 | 56 $formats = array_unique(array_merge($formats, $this->serializerFormats)); |
Chris@0 | 57 $route->setRequirement('_format', implode('|', $formats)); |
Chris@0 | 58 } |
Chris@0 | 59 } |
Chris@0 | 60 } |
Chris@0 | 61 |
Chris@0 | 62 } |