/** * @dataProvider encodeWithSecretNoSaltProvider */ public function testEncodeWithSecretNoSalt($input, $secret) { $this->setExpectedException('RZ\\Roadiz\\Core\\Exceptions\\EmptySaltException'); $code = StringHandler::encodeWithSecret($input, $secret); // Assert $this->assertEquals($input, StringHandler::decodeWithSecret($code, $secret)); }
/** * Generate a form-builder for contact forms. * * For example in your contact page controller : * * <pre> * use RZ\Roadiz\CMS\Controllers\EntryPointsController; * * ... * * $formBuilder = EntryPointsController::getContactFormBuilder( * $request, * true * ); * $formBuilder->add('email', 'email', array( * 'label'=>$this->getTranslator()->trans('your.email') * )) * ->add('name', 'text', array( * 'label'=>$this->getTranslator()->trans('your.name') * )) * ->add('message', 'textarea', array( * 'label'=>$this->getTranslator()->trans('your.message') * )) * ->add('callMeBack', 'checkbox', array( * 'label'=>$this->getTranslator()->trans('call.me.back'), * 'required' => false * )) * ->add('send', 'submit', array( * 'label'=>$this->getTranslator()->trans('send.contact.form') * )); * $form = $formBuilder->getForm(); * $this->assignation['contactForm'] = $form->createView(); * * </pre> * * Add session messages to your assignations * * <pre> * // Get session messages * $this->assignation['session']['messages'] = $this->getService('session')->getFlashBag()->all(); * </pre> * * Then in your contact page Twig template * * <pre> * {# * # Display contact errors * #} * {% if session.messages|length %} * {% for type, msgs in session.messages %} * {% for msg in msgs %} * <div data-uk-alert class="uk-alert * uk-alert-{% if type == "confirm" %}success * {% elseif type == "warning" %}warning{% else %}danger{% endif %}"> * <a href="" class="uk-alert-close uk-close"></a> * <p>{{ msg }}</p> * </div> * {% endfor %} * {% endfor %} * {% endif %} * {# * # Display contact form * #} * {% form_theme contactForm 'forms.html.twig' %} * {{ form(contactForm) }} * </pre> * * @param Symfony\Component\HttpFoundation\Request $request Contact page request * @param boolean $redirect Redirect to contact page after sending? * @param string $customRedirectUrl Redirect to a custom url * @param string $customEmailReceiver Send contact form to a custom email (or emails) * @param string $customEmailSubject Customize email subject * * @return Symfony\Component\Form\FormBuilder */ public static function getContactFormBuilder(Request $request, $redirect = true, $customRedirectUrl = null, $customEmailReceiver = null, $customEmailSubject = null) { $action = Kernel::getService('urlGenerator')->generate('contactFormLocaleAction', ['_locale' => $request->getLocale()]); $builder = Kernel::getService('formFactory')->createBuilder('form', null, ['intention' => static::CONTACT_FORM_TOKEN_INTENTION, 'attr' => ['id' => 'contactForm']])->setMethod('POST')->setAction($action)->add('_action', 'hidden', ['data' => 'contact']); if (true === $redirect) { if (null !== $customRedirectUrl) { $builder->add('_redirect', 'hidden', ['data' => strip_tags($customRedirectUrl)]); } else { $builder->add('_redirect', 'hidden', ['data' => strip_tags($request->getURI())]); } } if (null !== $customEmailReceiver) { $builder->add('_emailReceiver', 'hidden', ['data' => StringHandler::encodeWithSecret($customEmailReceiver, Kernel::getService('config')['security']['secret'])]); } if (null !== $customEmailSubject) { $builder->add('_emailSubject', 'hidden', ['data' => StringHandler::encodeWithSecret($customEmailSubject, Kernel::getService('config')['security']['secret'])]); } return $builder; }