haassie / rh_recaptcha

TYPO3 extension implementing Google reCAPTCHA
1 stars 9 forks source link

Exception while property mapping at property path "":It is not allowed to map property "answers". You need to use $propertyMappingConfiguration->allowProperties('answers') to enable mapping of this property #19

Open CDRO opened 7 years ago

CDRO commented 7 years ago

This issue happens again (apparently), but I guess this might have to do with our setup:

This only happens, when a confirmation view is activated (I hope this information is somewhat useful).

Regards Tizian

Moongazer commented 7 years ago

I've the same issue. We've also a powermail confirmation page activated, without confirmation-page its working fine. Here is the full log:

Thu, 13 Jul 2017 23:14:43 -0400 [ALERT] request="827f408a76b0a" component="TYPO3.CMS.Frontend.ContentObject.Exception.ProductionExceptionHandler": Oops, an error occurred! Code: 201707132314424aed78bf - {"exception":"TYPO3\\CMS\\Extbase\\Property\\Exception\\InvalidPropertyMappingConfigurationException: It is not allowed to map property \"answers\". You need to use $propertyMappingConfiguration->allowProperties('answers') to enable mapping of this property. in \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Property\/PropertyMapper.php:185\nStack trace:\n#0 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Property\/PropertyMapper.php(119): TYPO3\\CMS\\Extbase\\Property\\PropertyMapper->doMapping(Array, 'In2code\\\\Powerma...', Object(TYPO3\\CMS\\Extbase\\Mvc\\Controller\\MvcPropertyMappingConfiguration), Array)\n#1 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Controller\/Argument.php(270): TYPO3\\CMS\\Extbase\\Property\\PropertyMapper->convert(Array, 'In2code\\\\Powerma...', Object(TYPO3\\CMS\\Extbase\\Mvc\\Controller\\MvcPropertyMappingConfiguration))\n#2 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Controller\/AbstractController.php(428): TYPO3\\CMS\\Extbase\\Mvc\\Controller\\Argument->setValue(Array)\n#3 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Controller\/ActionController.php(170): TYPO3\\CMS\\Extbase\\Mvc\\Controller\\AbstractController->mapRequestArgumentsToControllerArguments()\n#4 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Dispatcher.php(86): TYPO3\\CMS\\Extbase\\Mvc\\Controller\\ActionController->processRequest(Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request), Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Response))\n#5 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Web\/FrontendRequestHandler.php(69): TYPO3\\CMS\\Extbase\\Mvc\\Dispatcher->dispatch(Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request), Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Response))\n#6 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Core\/Bootstrap.php(206): TYPO3\\CMS\\Extbase\\Mvc\\Web\\FrontendRequestHandler->handleRequest()\n#7 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Core\/Bootstrap.php(193): TYPO3\\CMS\\Extbase\\Core\\Bootstrap->handleRequest()\n#8 [internal function]: TYPO3\\CMS\\Extbase\\Core\\Bootstrap->run('', Array)\n#9 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/ContentObjectRenderer.php(7310): call_user_func_array(Array, Array)\n#10 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/UserContentObject.php(40): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->callUserFunction('TYPO3\\\\CMS\\\\Extba...', Array, '')\n#11 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/ContentObjectRenderer.php(943): TYPO3\\CMS\\Frontend\\ContentObject\\UserContentObject->render(Array)\n#12 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/ContentObjectRenderer.php(859): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->render(Object(TYPO3\\CMS\\Frontend\\ContentObject\\UserContentObject), Array)\n#13 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Controller\/TypoScriptFrontendController.php(3577): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSingle('USER', Array)\n#14 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Controller\/TypoScriptFrontendController.php(3522): TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController->INTincScript_process(Array)\n#15 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Controller\/TypoScriptFrontendController.php(3488): TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController->recursivelyReplaceIntPlaceholdersInContent()\n#16 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Http\/RequestHandler.php(232): TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController->INTincScript()\n#17 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/core\/Classes\/Core\/Bootstrap.php(302): TYPO3\\CMS\\Frontend\\Http\\RequestHandler->handleRequest(Object(TYPO3\\CMS\\Core\\Http\\ServerRequest))\n#18 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Http\/Application.php(78): TYPO3\\CMS\\Core\\Core\\Bootstrap->handleRequest(Object(TYPO3\\CMS\\Core\\Http\\ServerRequest))\n#19 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/index.php(33): TYPO3\\CMS\\Frontend\\Http\\Application->run()\n#20 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/index.php(34): {closure}()\n#21 {main}\n\nNext TYPO3\\CMS\\Extbase\\Property\\Exception: Exception while property mapping at property path \"\": It is not allowed to map property \"answers\". You need to use $propertyMappingConfiguration->allowProperties('answers') to enable mapping of this property. in \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Property\/PropertyMapper.php:128\nStack trace:\n#0 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Controller\/Argument.php(270): TYPO3\\CMS\\Extbase\\Property\\PropertyMapper->convert(Array, 'In2code\\\\Powerma...', Object(TYPO3\\CMS\\Extbase\\Mvc\\Controller\\MvcPropertyMappingConfiguration))\n#1 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Controller\/AbstractController.php(428): TYPO3\\CMS\\Extbase\\Mvc\\Controller\\Argument->setValue(Array)\n#2 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Controller\/ActionController.php(170): TYPO3\\CMS\\Extbase\\Mvc\\Controller\\AbstractController->mapRequestArgumentsToControllerArguments()\n#3 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Dispatcher.php(86): TYPO3\\CMS\\Extbase\\Mvc\\Controller\\ActionController->processRequest(Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request), Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Response))\n#4 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Mvc\/Web\/FrontendRequestHandler.php(69): TYPO3\\CMS\\Extbase\\Mvc\\Dispatcher->dispatch(Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Request), Object(TYPO3\\CMS\\Extbase\\Mvc\\Web\\Response))\n#5 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Core\/Bootstrap.php(206): TYPO3\\CMS\\Extbase\\Mvc\\Web\\FrontendRequestHandler->handleRequest()\n#6 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/extbase\/Classes\/Core\/Bootstrap.php(193): TYPO3\\CMS\\Extbase\\Core\\Bootstrap->handleRequest()\n#7 [internal function]: TYPO3\\CMS\\Extbase\\Core\\Bootstrap->run('', Array)\n#8 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/ContentObjectRenderer.php(7310): call_user_func_array(Array, Array)\n#9 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/UserContentObject.php(40): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->callUserFunction('TYPO3\\\\CMS\\\\Extba...', Array, '')\n#10 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/ContentObjectRenderer.php(943): TYPO3\\CMS\\Frontend\\ContentObject\\UserContentObject->render(Array)\n#11 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/ContentObject\/ContentObjectRenderer.php(859): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->render(Object(TYPO3\\CMS\\Frontend\\ContentObject\\UserContentObject), Array)\n#12 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Controller\/TypoScriptFrontendController.php(3577): TYPO3\\CMS\\Frontend\\ContentObject\\ContentObjectRenderer->cObjGetSingle('USER', Array)\n#13 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Controller\/TypoScriptFrontendController.php(3522): TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController->INTincScript_process(Array)\n#14 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Controller\/TypoScriptFrontendController.php(3488): TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController->recursivelyReplaceIntPlaceholdersInContent()\n#15 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Http\/RequestHandler.php(232): TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController->INTincScript()\n#16 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/core\/Classes\/Core\/Bootstrap.php(302): TYPO3\\CMS\\Frontend\\Http\\RequestHandler->handleRequest(Object(TYPO3\\CMS\\Core\\Http\\ServerRequest))\n#17 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/typo3\/sysext\/frontend\/Classes\/Http\/Application.php(78): TYPO3\\CMS\\Core\\Core\\Bootstrap->handleRequest(Object(TYPO3\\CMS\\Core\\Http\\ServerRequest))\n#18 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/index.php(33): TYPO3\\CMS\\Frontend\\Http\\Application->run()\n#19 \/homepages\/35\/d583512602\/htdocs\/libraries\/typo3_src-7.6.18\/index.php(34): {closure}()\n#20 {main}"}
gianstraf commented 6 years ago

Hi all, I've fixed this problem with a patch on powermail around class In2code\Powermail\Domain\Validator\InputValidator.

In method isValidField, this code causes the problem:

    /**
     * Validate a single field
     *
     * @param Field $field
     * @param mixed $value
     * @return void
     */
    protected function isValidField(Field $field, $value)
    {
        // Mandatory Check
        if ($field->isMandatory()) {
            if (!$this->validateMandatory($value)) {
                $this->setErrorAndMessage($field, 'mandatory');
            }
        }
        //...

In case of a powermail form with confirm step, field with captcha is not in page. The field is mandatory, then powermail sets a validation error. You can work around field->getType() and check the current powermail action. If that is "create", you can skip validation error.

Gianluca

Moongazer commented 6 years ago

Thanks a lot for your effort! I can not try it right now, but do you think this fix should be applied into the powermail extension? If so, maybe we should open a ticket there, if this issue is not related to this rh_recaptcha extension especially.

gianstraf commented 6 years ago

Sincerelly, I can't evaluate this. In example at the address https://github.com/einpraegsam/powermail/issues/89, @einpraegsam refers to ext https://github.com/einpraegsam/powermailrecaptcha. May be that the rh_recaptcha extension authors, can be check how has been implemented powermailrecaptcha, and than recode rh_recaptcha ?