public function CurrentUserInfo::process in JSON:API Resources 8
Process the resource request.
Parameters
\Symfony\Component\HttpFoundation\Request $request: The request.
\Drupal\jsonapi\ResourceType\ResourceType[] $resource_types: The route resource types.
Return value
\Drupal\jsonapi\ResourceResponse The response.
Throws
\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
\Drupal\Component\Plugin\Exception\PluginNotFoundException
File
- tests/
modules/ jsonapi_resources_test/ src/ Resource/ CurrentUserInfo.php, line 91
Class
- CurrentUserInfo
- Processes a request for the authenticated user's information.
Namespace
Drupal\jsonapi_resources_test\ResourceCode
public function process(Request $request, array $resource_types) {
$user_storage = $this->entityTypeManager
->getStorage('user');
$current_user = $user_storage
->load($this->currentUser
->id());
assert($current_user instanceof UserInterface);
$resource_type = reset($resource_types);
$links = new LinkCollection([]);
$primary_data = new ResourceObject($current_user, $resource_type, $current_user
->uuid(), NULL, [
'displayName' => $current_user
->getDisplayName(),
'roles' => $current_user
->getRoles(TRUE),
'token' => $this->tokenGenerator
->get(CsrfRequestHeaderAccessCheck::TOKEN_KEY),
], $links);
$top_level_data = new ResourceObjectData([
$primary_data,
], 1);
$response = $this
->createJsonapiResponse($top_level_data, $request);
$response
->addCacheableDependency((new CacheableMetadata())
->addCacheContexts([
'user',
]));
return $response;
}