src/MentalSchool/AppBundle/Controller/Security/SecurityController.php line 67

Open in your IDE?
  1. <?php
  2. namespace MentalSchool\AppBundle\Controller\Security;
  3. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  4. use Symfony\Component\HttpFoundation\RedirectResponse;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use FOS\UserBundle\Event\FilterUserResponseEvent;
  8. use FOS\UserBundle\Event\FormEvent;
  9. use FOS\UserBundle\Event\GetResponseNullableUserEvent;
  10. use FOS\UserBundle\Event\GetResponseUserEvent;
  11. use FOS\UserBundle\FOSUserEvents;
  12. use FOS\UserBundle\Model\UserInterface;
  13. use FOS\UserBundle\Util\TokenGeneratorInterface;
  14. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  17. /**
  18.  * Student profile controller.
  19.  *
  20.  * @Route("/")
  21.  */
  22. class SecurityController extends Controller
  23. {
  24.     /**
  25.      * @Route("/student-disabled-account/{userId}", name="ms_student_show_disabled_account")
  26.      */
  27.     public function disabledAction($userId)
  28.     {
  29.         $em $this->getDoctrine()->getManager();
  30.         $user $em->getRepository('AppBundle:User')->find($userId);
  31.         return $this->render('AppBundle:Student:Page/student_disabled.html.twig', ['user' => $user]);
  32.     }
  33.     /**
  34.      * @Route("/teacher-disabled-account/{userId}", name="ms_teacher_show_disabled_account")
  35.      */
  36.     public function teacherDisabledAction($userId)
  37.     {
  38.         $em $this->getDoctrine()->getManager();
  39.         $user $em->getRepository('AppBundle:User')->find($userId);
  40.         return $this->render('AppBundle:Student:Page/teacher_disabled.html.twig', ['user' => $user]);
  41.     }
  42.     /**
  43.      * @Route("/student/logout", name="ms_student_logout")
  44.      */
  45.     public function logoutAction(Request $request)
  46.     {
  47.         //clear the token, cancel session and redirect
  48.         $locale $request->getLocale();
  49.         $this->get('security.token_storage')->setToken(null);
  50.         $request->getSession()->invalidate();
  51.         $response = new Response();
  52.         $response->headers->clearCookie('REMEMBERME');
  53.         $response->send();
  54.         $url $locale == "uk" "/" "/admin/login?locale=$locale";
  55.         return $this->redirect($url);
  56.     }
  57.     /**
  58.      * @Route("/reset-password", name="ms_user_reset_password")
  59.      */
  60.     public function resetPasswordAction(Request $request)
  61.     {
  62.         $status $request->query->get('status') ? $request->query->get('status') : null;
  63.         $message $request->query->get('message') ? $request->query->get('message') : null;
  64.         return $this->render('AppBundle:Security:reset-password.html.twig', ["status" => $status"message" => $message]);
  65.     }
  66.     /**
  67.      * @Route("/send-new-password", name="ms_send_new_password")
  68.      */
  69.     public function sendNewPasswordAction(Request $request)
  70.     {
  71.         $username $request->request->get('username');
  72.         /** @var $user UserInterface */
  73.         $user $this->get('fos_user.user_manager')->findUserByUsernameOrEmail($username);
  74.         /** @var $dispatcher EventDispatcherInterface */
  75.         $dispatcher $this->get('event_dispatcher');
  76.         /* Dispatch init event */
  77.         $event = new GetResponseNullableUserEvent($user$request);
  78.         if (null !== $event->getResponse()) {
  79.             return $event->getResponse();
  80.         }
  81.         $ttl $this->container->getParameter('fos_user.resetting.retry_ttl');
  82.         if (null !== $user && !$user->isPasswordRequestNonExpired($ttl)) {
  83.             $entityManager $this->container->get('doctrine.orm.entity_manager');
  84.             $originalPassword $this->container->get('app.common.service')->getRandomPassword();
  85.             $user->setPlainPassword($originalPassword);
  86.             $password $this->get('security.encoder_factory')->getEncoder($user)->encodePassword($originalPassword$user->getSalt());
  87.             $user->setPassword($password);
  88.             $entityManager->persist($user);
  89.             $entityManager->flush();
  90.             $messageData = [
  91.                 'subject' =>  $this->container->getParameter('system_name'),
  92.                 'body' => $this->get('templating')->render(
  93.                     'AppBundle:Email:resset_password.html.twig',[
  94.                     'password' => $originalPassword,
  95.                     'login' => $user->getEmail(),
  96.                     'locale' => $request->getLocale()
  97.                 ])
  98.             ];
  99.             $this->container->get('app.notification')->sendEmail($messageData, [$user]);
  100.             $message $this->get('translator')->trans('app.reset_password.send_message_success', [], 'app');
  101.             return new RedirectResponse($this->generateUrl('ms_user_reset_password', array('status'=> 'success''message' => $message)));
  102.         }
  103.         $message $this->get('translator')->trans('app.reset_password.send_message_error', [], 'app');
  104.         return new RedirectResponse($this->generateUrl('ms_user_reset_password', array('status'=> 'error''message' => $message)));
  105.     }
  106. }