security - symfony 3.1 registration email no FOSUser -


nice meet you.

i'm developping symfony 3.1.3 , i'm using security system offered framework, no fosuser neither guard.

i have in controller typical function login:

public function loginaction(request $request) {     // works     $authenticationutils = $this->get('security.authentication_utils');      // login error if there 1     $error = $authenticationutils->getlastauthenticationerror();      // last username entered user     $lastusername = $authenticationutils->getlastusername();      return $this->render(         'security/loginform_old.html.twig',         array(             // last username entered user             'last_username' => $lastusername,             'error'         => $error,         )     ); } 

and want check if user has activated account. in entity user have isactive attribute set false default , link registration email setted true.

i have been searching issue without results , i'm sure common, wants check if user's email one.

thanks.

lets assume have registrationcontroller.php class store code manage user's registration.

create function sends email user after registration:

public function sendconfirmationemailmessage(user $user) {      $confirmationtoken = $user->getconfirmationtoken();     $username = $user->getusername();      $subject = 'account activation';     $email = $user->getemail();      $renderedtemplate = $this->templating->render('appbundle:emails:registration.html.twig', array(         'username' => $username,         'confirmationtoken' => $confirmationtoken     ));      $message = \swift_message::newinstance()             ->setsubject($subject)             ->setfrom(mailer_from)             ->setreplyto(mailer_from)             ->setto($email)             ->setbody($renderedtemplate, "text/html");      $this->mailer->send($message);  } 

create route associated function takes generated token argument, search user token , activate if user exist:

/** * @route("user/activate/{token}") */ public function confirmaction(request $request, $token) {     $em = $this->getdoctrine()->getmanager();     $repository = $em->getrepository('appbundle:user');      $user = $repository->finduserbyconfirmationtoken($token);      if (!$user)     {         throw $this->createnotfoundexception('we couldn\'t find account confirmation token');     }      $user->setconfirmationtoken(null);     $user->setenabled(true);      $em->persist($user);     $em->flush();      return $this->redirecttoroute('user_registration_confirmed'); } 

then when have function registers user call sendconfirmationemailmessage shown below:

public function registeraction(request $request) {     /* logic goes here: form validation, creating new user */     /* $user created user */     sendconfirmationemailmessage($user); } 

anyway if isactive() function return false symfony security system prevent login. user entity should implement userinterface.


Comments