security - symfony2 can't login “Bad credentials” -


i writing website using symfony framework reason, login process not working.
message: bad credentials

here security.yml

# app/config/security.yml jms_security_extra:     secure_all_services: false     expressions: true  security:     firewalls:         secured_area:             pattern:    ^/             anonymous: ~             form_login:                 login_path:  /login                 check_path:  /login_check      access_control:         - { path: ^/admin, roles: role_admin }      providers:         in_memory:             memory:                 users:                     user:  { password: userpass, roles: [ 'role_user' ] }                     contant_manager: { password: manpass, roles: [ 'role_content_manager' ] }                     admin: { password: adminpass, roles: [ 'role_admin' ] }     encoders:         symfony\component\security\core\user\user: plaintext 

my user.php class

<?php  namespace youmustknowit\newsbundle\entity;  use doctrine\orm\mapping orm; use symfony\component\security\core\user\advanceduserinterface; use doctrine\common\collections\arraycollection; use apy\datagridbundle\grid\mapping grid;  /**  * @orm\table(name="users")  * @orm\entity(repositoryclass="\youmustknowit\newsbundle\entity\userrepository")  *  * @grid\source(columns="id, username, email, role.name, isactive")  */ class user implements advanceduserinterface, \serializable {     /**      * @orm\column(type="integer")      * @orm\id      * @orm\generatedvalue(strategy="auto")      *       * @grid\column(filterable=false)      */     private $id;      /**      * @orm\column(type="string", length=25, unique=true)      */     private $username;      /**      * @orm\column(type="string", length=32)      */     private $salt;      /**      * @orm\column(type="string", length=100)      */     private $password;      /**      * @orm\column(type="string", length=60, unique=true)      */     private $email;          /**      * @orm\manytomany(targetentity="roleslist", inversedby="users")      *       * @grid\column(field="roleslist.role", type="text", filter="select", title="role")      */     private $role;      /**      * @orm\onetomany(targetentity="newscatalog", mappedby="user")      * @orm\column(name="created_news", nullable=true)      */     private $creatednews;      /**      * @orm\column(name="is_active", type="boolean")      */     private $isactive;       public function __construct()     {         $this->isactive    = false;         $this->salt        = md5(uniqid(null, true));         $this->role      = new \doctrine\common\collections\arraycollection();         $this->creatednews = new \doctrine\common\collections\arraycollection();     }      public function __tostring()      {         return $this->username;     }      public function isaccountnonexpired()     {         return true;     }      public function isaccountnonlocked()     {         return true;     }      public function iscredentialsnonexpired()     {         return true;     }      public function isenabled()     {         return $this->isactive;     }      /**      * @inheritdoc      */     public function getroles()     {         return $this->role->toarray();     }      /**      * @inheritdoc      */     public function getusername()     {         return $this->username;     }      /**      * @inheritdoc      */     public function getsalt()     {         return $this->salt;     }      /**      * @inheritdoc      */     public function getpassword()     {         return $this->password;     }      /**      * @inheritdoc      */     public function getemail()     {         return $this->email;     }      /**      * @inheritdoc      */     public function erasecredentials()     {     }      /**      * @see \serializable::serialize()      */     public function serialize()     {         return serialize(array(                 $this->id,         ));     }      /**      * @see \serializable::unserialize()      */     public function unserialize($serialized)     {         list (                 $this->id,         ) = unserialize($serialized);     }      /**      * id      *      * @return integer       */     public function getid()     {         return $this->id;     }      /**      * set username      *      * @param string $username      * @return user      */     public function setusername($username)     {         $this->username = $username;          return $this;     }      /**      * set salt      *      * @param string $salt      * @return user      */     public function setsalt($salt)     {         $this->salt = $salt;                     return $this;     }      /**      * set password      *      * @param string $password      * @return user      */     public function setpassword($password)     {         $this->password = $password;          return $this;     }      /**      * set email      *      * @param string $email      * @return user      */     public function setemail($email)     {         $this->email = $email;          return $this;     }      /**      * set isactive      *      * @param boolean $isactive      * @return user      */     public function setisactive($isactive)     {         $this->isactive = $isactive;          return $this;     }      /**      * isactive      *      * @return boolean       */     public function getisactive()     {         return $this->isactive;     }      /**      * add role      *      * @param \youmustknowit\newsbundle\entity\roleslist $role      * @return user      */     public function addrole(\youmustknowit\newsbundle\entity\roleslist $role)     {         $this->role[] = $role;          return $this;     }      /**      * remove role      *      * @param \youmustknowit\newsbundle\entity\roleslist $role      */     public function removerole(\youmustknowit\newsbundle\entity\roleslist $role)     {         $this->role->removeelement($role);     }      /**      * add creatednews      *      * @param \youmustknowit\newsbundle\entity\newscatalog $creatednews      * @return user      */     public function addcreatednews(\youmustknowit\newsbundle\entity\newscatalog $creatednews)     {         $this->creatednews[] = $creatednews;          return $this;     }      /**      * remove creatednews      *      * @param \youmustknowit\newsbundle\entity\newscatalog $creatednews      */     public function removecreatednews(\youmustknowit\newsbundle\entity\newscatalog $creatednews)     {         $this->creatednews->removeelement($creatednews);     }      /**      * creatednews      *      * @return \doctrine\common\collections\collection       */     public function getcreatednews()     {         return $this->creatednews;     }      /**      * role      *      * @return \doctrine\common\collections\collection       */     public function getrole()     {         return $this->role;     } } 

my userrepository.php class

<?php  namespace youmustknowit\newsbundle\entity;  use symfony\component\security\core\user\userinterface; use symfony\component\security\core\user\userproviderinterface; use symfony\component\security\core\exception\usernamenotfoundexception; use symfony\component\security\core\exception\unsupporteduserexception; use doctrine\orm\entityrepository; use doctrine\orm\noresultexception;  class userrepository extends entityrepository implements userproviderinterface {     public function loaduserbyusername($username)     {            $q = $this             ->createquerybuilder('u')             ->select('u, g')             ->leftjoin('u.groups', 'g')             ->where('u.username = :username or u.email = :email')             ->setparameter('username', $username)             ->setparameter('email', $username)             ->getquery();                 try {             $user = $q->getsingleresult();         } catch (noresultexception $e) {             $message = sprintf(                 'unable find active admin user object identified "%s".',                 $username             );             throw new usernamenotfoundexception($message, 0, $e);         }          return $user;     }      public function refreshuser(userinterface $user)     {         $class = get_class($user);         if (!$this->supportsclass($class)) {             throw new unsupporteduserexception(                 sprintf(                     'instances of "%s" not supported.',                     $class                 )             );         }          return $this->find($user->getid());     }      public function supportsclass($class)     {         return $this->getentityname() === $class             || is_subclass_of($class, $this->getentityname());     }      public function findall()     {         return $this->createquerybuilder('u');     } } 

securitycontroller.php

<?php  namespace youmustknowit\newsbundle\controller;  use symfony\bundle\frameworkbundle\controller\controller; use symfony\component\security\core\securitycontext; use sensio\bundle\frameworkextrabundle\configuration\route; use symfony\component\httpfoundation\request; use youmustknowit\newsbundle\entity\user;  class securitycontroller extends controller {        /**      * @route("/login", name="login")      */     public function loginaction()     {         $request = $this->getrequest();         $session = $request->getsession();          if ($request->attributes->has(securitycontext::authentication_error)) {             $error = $request->attributes->get(                 securitycontext::authentication_error             );         } else {             $error = $session->get(securitycontext::authentication_error);             $session->remove(securitycontext::authentication_error);         }          return $this->render(             'youmustknowitnewsbundle:user:login.html.twig',             array(                 'last_username' => $session->get(securitycontext::last_username),                 'error'         => $error,             )         );     }      /**      * @route("/login_check", name="login_check")      */     public function logincheckaction()     {                 }      /**      * @route("/logout", name="logout")      */     public function logoutaction()     {      }      /**      * @route("/recover_pass", name="recover_pass")      */     public function recoverpasswordaction(request $request)     {         $data = array();          $form = $this->createformbuilder($data)             ->add('email', 'email')             ->getform();          if ($request->getmethod() == 'post') {             $form->bind($request);              if ($form->isvalid()) {                 $data = $form->getdata();                 $user = $this->getdoctrine()                     ->getrepository('youmustknowitnewsbundle:user')                     ->findonebyemail($data['email']);                  if (isset($user)) {                     $this->createnewpassword($user);                                     return $this->redirect($this->generateurl('homepage'));                                     } else {                     $this->get('session')->getflashbag()->add(                         'error_message',                         'the user such email doesn\'t exist.'                     );                 }                       }         }          return $this->render('youmustknowitnewsbundle:default:recoverpass.html.twig', array(             'form' => $form->createview()         ));     }      private function sendemail(user $user)     {                    $message = \swift_message::newinstance()             ->setsubject('youmustknowit! password restoration.')             ->setfrom('php.gr2@gmail.com')             ->setto($user->getemail())             ->setbody('your new password: ' . $user->getpassword());          $this->get('mailer')->send($message);     }      private function generatepassword($length = 7)     {         $num = range(0, 9);         $alf = range('a', 'z');         $_alf = range('a', 'z');         $symbols = array_merge($num, $alf, $_alf);         shuffle($symbols);         $code_array = array_slice($symbols, 0, $length);         $code = implode("", $code_array);         return $code;     }      private function encodepassword(user $user)     {         $factory  = $this->get('security.encoder_factory');         $encoder  = $factory->getencoder($user);         $password = $encoder->encodepassword(             $user->getpassword(),              $user->getsalt()         );          return $password;     }      private function createnewpassword(user $user)     {         $password = $this->generatepassword();         $user->setpassword($password);         $this->sendemail($user);         $encodedpassword = $this->encodepassword($user);         $user->setpassword($encodedpassword);          $em = $this->getdoctrine()->getentitymanager();         $em->persist($user);         $em->flush();          $this->get('session')->getflashbag()->add(              'success_message',              'on email new password sent.'         );     } } 

and login.html.twig

{% extends '::base.html.twig' %}      {% block body %}         {% if error %}             <div>{{ error.message }}</div>         {% endif %}          <form action="{{ path('login_check') }}" method="post">             <label for="username">username:</label>             <input type="text" id="username" name="_username" value="{{ last_username }}" />              <label for="password">password:</label>             <input type="password" id="password" name="_password" />              #<input type="hidden" name="_csrf_token" value="/" />             <input type="submit" name="login" />         </form>     {% endblock %} 

if using entity mapped database provider: missing correct mapping.

providers:     users:         entity: { class: youmustknowitnewsbundle:user, property: username } 

Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -