class QueryParameterWorkspaceNegotiator
Same name in other branches
- 9 core/modules/workspaces/src/Negotiator/QueryParameterWorkspaceNegotiator.php \Drupal\workspaces\Negotiator\QueryParameterWorkspaceNegotiator
- 8.9.x core/modules/workspaces/src/Negotiator/QueryParameterWorkspaceNegotiator.php \Drupal\workspaces\Negotiator\QueryParameterWorkspaceNegotiator
- 11.x core/modules/workspaces/src/Negotiator/QueryParameterWorkspaceNegotiator.php \Drupal\workspaces\Negotiator\QueryParameterWorkspaceNegotiator
Defines the query parameter workspace negotiator.
Hierarchy
- class \Drupal\workspaces\Negotiator\SessionWorkspaceNegotiator implements \Drupal\workspaces\Negotiator\WorkspaceNegotiatorInterface, \Drupal\workspaces\Negotiator\WorkspaceIdNegotiatorInterface
- class \Drupal\workspaces\Negotiator\QueryParameterWorkspaceNegotiator extends \Drupal\workspaces\Negotiator\SessionWorkspaceNegotiator
Expanded class hierarchy of QueryParameterWorkspaceNegotiator
1 string reference to 'QueryParameterWorkspaceNegotiator'
- workspaces.services.yml in core/
modules/ workspaces/ workspaces.services.yml - core/modules/workspaces/workspaces.services.yml
1 service uses QueryParameterWorkspaceNegotiator
File
-
core/
modules/ workspaces/ src/ Negotiator/ QueryParameterWorkspaceNegotiator.php, line 12
Namespace
Drupal\workspaces\NegotiatorView source
class QueryParameterWorkspaceNegotiator extends SessionWorkspaceNegotiator {
/**
* {@inheritdoc}
*/
public function applies(Request $request) {
return is_string($request->query
->get('workspace')) && is_string($request->query
->get('token')) && parent::applies($request);
}
/**
* {@inheritdoc}
*/
public function getActiveWorkspaceId(Request $request) : ?string {
$workspace_id = (string) $request->query
->get('workspace');
$token = (string) $request->query
->get('token');
$is_valid_token = hash_equals($this->getQueryToken($workspace_id), $token);
// This negotiator receives a workspace ID from user input, so a minimal
// validation is needed to ensure that we protect against fake input before
// the workspace manager fully validates the negotiated workspace ID.
// @see \Drupal\workspaces\WorkspaceManager::getActiveWorkspace()
return $is_valid_token ? $workspace_id : NULL;
}
/**
* Calculates a token based on a workspace ID.
*
* @param string $workspace_id
* The workspace ID.
*
* @return string
* An 8 char token based on the given workspace ID.
*/
protected function getQueryToken(string $workspace_id) : string {
// Return the first 8 characters.
return substr(Crypt::hmacBase64($workspace_id, Settings::getHashSalt()), 0, 8);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
QueryParameterWorkspaceNegotiator::applies | public | function | Checks whether the negotiator applies to the current request or not. | Overrides SessionWorkspaceNegotiator::applies |
QueryParameterWorkspaceNegotiator::getActiveWorkspaceId | public | function | Performs workspace negotiation. | Overrides SessionWorkspaceNegotiator::getActiveWorkspaceId |
QueryParameterWorkspaceNegotiator::getQueryToken | protected | function | Calculates a token based on a workspace ID. | |
SessionWorkspaceNegotiator::getActiveWorkspace | public | function | ||
SessionWorkspaceNegotiator::setActiveWorkspace | public | function | Notifies the negotiator that the workspace ID returned has been accepted. | Overrides WorkspaceNegotiatorInterface::setActiveWorkspace |
SessionWorkspaceNegotiator::unsetActiveWorkspace | public | function | Unsets the negotiated workspace. | Overrides WorkspaceNegotiatorInterface::unsetActiveWorkspace |
SessionWorkspaceNegotiator::__construct | public | function |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.