Skip to content
Snippets Groups Projects
Commit a4280073 authored by Matt Glaman's avatar Matt Glaman Committed by Matt Glaman
Browse files

Issue #3126675 by mglaman: authenticated-as link breaks if user resource type name has been changed

parent 1a04270c
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ use Drupal\Core\Plugin\ContainerFactoryPluginInterface; ...@@ -9,6 +9,7 @@ use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Session\AccountInterface; use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Url; use Drupal\Core\Url;
use Drupal\jsonapi\JsonApiResource\JsonApiDocumentTopLevel; use Drupal\jsonapi\JsonApiResource\JsonApiDocumentTopLevel;
use Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface;
use Drupal\jsonapi_hypermedia\AccessRestrictedLink; use Drupal\jsonapi_hypermedia\AccessRestrictedLink;
use Drupal\jsonapi_hypermedia\Plugin\LinkProviderBase; use Drupal\jsonapi_hypermedia\Plugin\LinkProviderBase;
use Drupal\user\UserInterface; use Drupal\user\UserInterface;
...@@ -41,6 +42,13 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont ...@@ -41,6 +42,13 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont
*/ */
private $userStorage; private $userStorage;
/**
* The resource type repository.
*
* @var \Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface
*/
private $resourceTypeRepository;
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
...@@ -50,6 +58,7 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont ...@@ -50,6 +58,7 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont
$provider->setUserStorage( $provider->setUserStorage(
$container->get('entity_type.manager')->getStorage('user') $container->get('entity_type.manager')->getStorage('user')
); );
$provider->setResourceTypeRepository($container->get('jsonapi.resource_type.repository'));
return $provider; return $provider;
} }
...@@ -73,6 +82,16 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont ...@@ -73,6 +82,16 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont
$this->userStorage = $storage; $this->userStorage = $storage;
} }
/**
* Set the resource type repository.
*
* @param \Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface $resource_type_repository
* The resource type repository.
*/
public function setResourceTypeRepository(ResourceTypeRepositoryInterface $resource_type_repository) {
$this->resourceTypeRepository = $resource_type_repository;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
...@@ -89,10 +108,12 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont ...@@ -89,10 +108,12 @@ final class AuthenticatedAsLinkProvider extends LinkProviderBase implements Cont
return AccessRestrictedLink::createInaccessibleLink($link_cacheability); return AccessRestrictedLink::createInaccessibleLink($link_cacheability);
} }
$resource_type = $this->resourceTypeRepository->get($user->getEntityTypeId(), $user->bundle());
$resource_type_name = $resource_type->getTypeName();
return AccessRestrictedLink::createLink( return AccessRestrictedLink::createLink(
AccessResult::allowedIf($user->isAuthenticated())->cachePerUser(), AccessResult::allowedIf($user->isAuthenticated())->cachePerUser(),
$link_cacheability, $link_cacheability,
Url::fromRoute('jsonapi.user--user.individual', ['entity' => $user->uuid()]), Url::fromRoute("jsonapi.$resource_type_name.individual", ['entity' => $user->uuid()]),
$this->getLinkRelationType() $this->getLinkRelationType()
); );
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment