class MvcPropertyMappingConfigurationService (View source)

This is a Service which can generate a request hash and check whether the currently given arguments fit to the request hash.

It is used when forms are generated and submitted: After a form has been generated, the method "generateRequestHash" is called with the names of all form fields. It cleans up the array of form fields and creates another representation of it, which is then serialized and hashed.

Both serialized form field list and the added hash form the request hash, which will be sent over the wire (as an argument __hmac).

On the validation side, the validation happens in two steps: 1) Check if the request hash is consistent (the hash value fits to the serialized string) 2) Check that all GET/POST parameters submitted occur inside the form field list of the request hash.

Note: It is crucially important that a private key is computed into the hash value! This is done inside the HashService.

Properties

protected HashService $hashService

Methods

string
generateTrustedPropertiesToken(array $formFieldNames, string $fieldNamePrefix = '')

Generate a request hash for a list of form fields

string
serializeAndHashFormFieldArray(array $formFieldArray)

Serialize and hash the form field array

void
initializePropertyMappingConfigurationFromRequest(ActionRequest $request, Arguments $controllerArguments)

Initialize the property mapping configuration in $controllerArguments if the trusted properties are set inside the request.

void
modifyPropertyMappingConfiguration(array $propertyConfiguration, PropertyMappingConfiguration $propertyMappingConfiguration)

Modify the passed $propertyMappingConfiguration according to the $propertyConfiguration which has been generated by e.g. Fluid. In detail, if the $propertyConfiguration contains an __identity field, we allow modification of objects; else we allow creation.

Details

string generateTrustedPropertiesToken(array $formFieldNames, string $fieldNamePrefix = '')

Generate a request hash for a list of form fields

Parameters

array $formFieldNames

Array of form fields

string $fieldNamePrefix

Return Value

string

trusted properties token

Exceptions

InvalidArgumentForHashGenerationException

protected string serializeAndHashFormFieldArray(array $formFieldArray)

Serialize and hash the form field array

Parameters

array $formFieldArray

form field array to be serialized and hashed

Return Value

string Hash

void initializePropertyMappingConfigurationFromRequest(ActionRequest $request, Arguments $controllerArguments)

Initialize the property mapping configuration in $controllerArguments if the trusted properties are set inside the request.

Parameters

ActionRequest $request
Arguments $controllerArguments

Return Value

void

Exceptions

InvalidArgumentForHashGenerationException
InvalidHashException
NoSuchArgumentException

protected void modifyPropertyMappingConfiguration(array $propertyConfiguration, PropertyMappingConfiguration $propertyMappingConfiguration)

Modify the passed $propertyMappingConfiguration according to the $propertyConfiguration which has been generated by e.g. Fluid. In detail, if the $propertyConfiguration contains an __identity field, we allow modification of objects; else we allow creation.

All other properties are specified as allowed properties.

Parameters

array $propertyConfiguration
PropertyMappingConfiguration $propertyMappingConfiguration

Return Value

void