123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
-
- namespace Muzich\IndexBundle\Controller;
-
- use Muzich\CoreBundle\lib\Controller;
- use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
- use Symfony\Component\Security\Core\SecurityContext;
- use Symfony\Component\Validator\Constraints\Email;
- use Symfony\Component\Validator\Constraints\Collection;
- use Symfony\Component\HttpFoundation\Request;
- use Muzich\UserBundle\Form\Type\RegistrationFormType;
- use Muzich\CoreBundle\Entity\User;
-
- class IndexController extends Controller
- {
-
- /**
- *
- */
- public function indexAction()
- {
- // On rajoute le test sur l'environnement car dans les tests, d'un test a l'autre
- // l'utilisateur reste connecté et pas moyen de le déco ...
- if ($this->getUser() != 'anon.' && $this->container->getParameter('env') != 'test')
- {
- return $this->redirect($this->generateUrl('home'));
- }
-
- $vars = $this->proceedLogin();
- $form = $this->getRegistrationForm();
-
- return $this->render('MuzichIndexBundle:Index:index.html.twig', array_merge($vars, array(
- 'form' => $form->createView(),
- 'presubscription_form' => $this->getPreSubscriptionForm()->createView()
- )));
- }
-
- protected function getRegistrationForm()
- {
- return $this->createForm(new RegistrationFormType(), new User());
- }
-
- /**
- * Gestion du formulaire d'identification sur la page d'index.
- *
- * @return type array
- */
- protected function proceedLogin()
- {
- $request = $this->container->get('request');
- /* @var $request \Symfony\Component\HttpFoundation\Request */
- $session = $request->getSession();
- /* @var $session Symfony\Component\HttpFoundation\Session\Session */
-
- // get the error if any (works with forward and redirect -- see below)
- if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
- $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
- } elseif (null !== $session && $session->has(SecurityContext::AUTHENTICATION_ERROR)) {
- $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
- $session->remove(SecurityContext::AUTHENTICATION_ERROR);
- } else {
- $error = '';
- }
-
- if ($error) {
- $error = $this->trans('login.fail', array(), 'users');
- }
- // last username entered by the user
- $lastUsername = (null === $session) ? '' : $session->get(SecurityContext::LAST_USERNAME);
-
- return array(
- 'last_username' => $lastUsername,
- 'error' => $error,
- 'registration_errors_pers' => array()
- );
- }
-
- public function presubscriptionAction(Request $request)
- {
- $form = $this->getPreSubscriptionForm();
- $form->bind($request);
- if ($form->isValid())
- {
- $message = \Swift_Message::newInstance()
- ->setSubject($this->trans('mail.presubscription.subject', array(), 'text'))
- ->setFrom(array(
- $this->container->getParameter('emails_from') => $this->container->getParameter('emails_from_name')
- ))
- ->setTo($form->getData()->getEmail())
- ->setBody(
- $this->renderView(
- 'MuzichIndexBundle:Presubscription:confirm.txt.twig',
- array(
- 'url' => $this->generateUrl('presubscription_register_confirm', array(
- 'token' => $form->getData()->getToken()
- ), true)
- )
- )
- )
- ;
- $message->getHeaders()->addTextHeader('List-Unsubscribe', 'unsubscribe@muzi.ch');
-
- $this->get('mailer')->send($message);
-
-
- $this->persist($form->getData());
- $this->flush();
- $this->setFlash('info', 'presubscription.success');
- return $this->redirect($this->generateUrl('index'));
- }
-
- $this->setFlash('error', 'presubscription.error');
- return $this->render('MuzichIndexBundle:Index:index.html.twig', array(
- 'form' => $this->getRegistrationForm()->createView(),
- 'presubscription_form' => $form->createView(),
- 'last_username' => '',
- 'error' => '',
- 'registration_errors_pers' => array()
- ));
- }
-
- public function presubscriptionConfirmAction($token)
- {
- $presubscription = $this->getDoctrine()->getRepository('MuzichCoreBundle:Presubscription')->findOneBy(array(
- 'token' => $token,
- 'confirmed' => false
- ));
-
- if (!$presubscription)
- {
- throw $this->createNotFoundException();
- }
-
- $presubscription->setConfirmed(true);
- $this->persist($presubscription);
- $this->flush();
-
- $this->setFlash('success', 'presubscription.confirmed');
- return $this->redirect($this->generateUrl('index'));
- }
-
- }
|