예제 #1
0
 /**
  * @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));
 }
예제 #2
0
 /**
  * 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;
 }