configuration = new CrudConfiguration(); } /** * @Route("/user/{page}", name="FOSUserBundleUserAdmin_index", defaults={"page" = "1"}, requirements={"page" = "\d+"}) * @Template() */ public function indexAction($page, Request $request) { return parent::indexAction($page, $request); } /** * @Route("/user/new", name="FOSUserBundleUserAdmin_new") * @Template() */ public function newAction(Request $request) { $this->getConfiguration()->setFormNewOptions(array('roles' => $this->container->getParameter('trinity_user.roles'))); $this->getConfiguration()->setFormFilterOptions(array('roles' => $this->container->getParameter('trinity_user.roles'))); return parent::newAction($request); } /** * @Route("/user/edit/{id}", name="FOSUserBundleUserAdmin_edit") * @Template() * @ParamConverter("object", class="FOS\UserBundle\Propel\User") */ public function editAction($object, Request $request) { $this->getConfiguration()->setFormEditOptions(array('roles' => $this->container->getParameter('trinity_user.roles'))); $this->getConfiguration()->setFormFilterOptions(array('roles' => $this->container->getParameter('trinity_user.roles'))); return parent::editAction($object, $request); } /** * @Route("/user/remove/{id}/{token}", name="FOSUserBundleUserAdmin_remove") * @Template() * @ParamConverter("object", class="FOS\UserBundle\Propel\User") */ public function removeAction($object, $token, Request $request) { return parent::removeAction($object, $token, $request); } /** * @Route("/user/batch", name="FOSUserBundleUserAdmin_batch") * @Template() * @Method({"POST"}) */ public function batchAction(Request $request) { return parent::batchAction($request); } /** * @Route("/user/filter/clear", name="FOSUserBundleUserAdmin_filter_clear") * @Template() */ public function clearFilterAction(Request $request) { return parent::clearFilterAction($request); } /** * @Route("/user/generate_password/{id}/{token}", name="TrinityDashBoardBundle_generate_password") * @Template() * @ParamConverter("object", class="FOS\UserBundle\Propel\User", options={"id" = "id"}) */ public function generatePasswordAction($object, $token, Request $request) { /** @var User $object */ $redirect = $this->redirect($this->generateUrl('FOSUserBundleUserAdmin_index')); if ($this->getRemoveToken() !== $token) { $this->getSessionUser()->setFlash( 'message', new FlashError('crud.flash.token'), false, $this->getConfiguration()->getStorageNamespace() ); return $redirect; } $new_password = substr(sha1(uniqid() + mt_rand() + time()), 0, 15); $object->setPlainPassword($new_password); if($this->container->getParameter('trinity_user.active_when_generate') === true){ $object->setEnabled(true); } $this->get('fos_user.user_manager')->updateUser($object); $this->sendGeneratedPassword($object, $new_password); $this->getSessionUser()->setFlash( 'message', new FlashSuccess('crud.user.new_password'), false, $this->getConfiguration()->getStorageNamespace() ); return $redirect; } protected function sendGeneratedPassword($user, $password) { $body = $this->get('templating')->render( 'TrinityUserBundle:UserAdmin:generatePasswordEmail.html.twig', array( 'user' => $user, 'password' => $password, ) ); $message = \Swift_Message::newInstance() ->setSubject($this->get('translator')->trans('New password')) ->setFrom( $this->container->getParameter('trinity_user.sender_mail'), $this->container->getParameter('trinity_user.sender_name') ) ->setTo(array($user->getEmail())) ->setBody($body, 'text/html') ; return $this->get('mailer')->send($message); } public function postSave($object, $was_new = false) { $this->get('fos_user.user_manager')->updateUser($object); } /** * @return mixed * @throws \LogicException */ public function getConfiguration() { // DI first if($this->has('trinity.user.crud.configuration')){ $this->configuration = $this->get('trinity.user.crud.configuration'); } if (empty($this->configuration)) { throw new \LogicException('You must specify a crud configuration.'); } if (null === $this->configuration->getStorageNamespace()) { $this->configuration->setStorageNamespace(get_class($this)); } return $this->configuration; } }