Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour a tous;
j'ai commencé le developpement sur un projet avec zend et j'aimerais bien avoir un espace avec une possibilité d'authentification avec soit email soit N° de tél. Je ne sais comment faire pour prendre les 2 en considération dans la vérification.
Hors ligne
Bonjour,
As-tu déjà du code sur lequel on peut se baser pour t'aider ? Zend_Auth, donc ZF1, il s'agit donc uniquement de rajouter un test dans ton controlleur d'authentification...
Hors ligne
Voici le code que j'utilise actuellement pour l'authentification:
[lang=php] $form = new Application_Form_Login(); if ($this->_request->isPost()) { $this->_helper->viewRenderer->setNoRender(); $authAdapter = $this->_authadapter(); $authAdapter->setIdentity($this->_request->getParam('email')); $authAdapter->setCredential(md5($this->_request->getParam('password'))); $result = Zend_Auth::getInstance()->authenticate($authAdapter); if ($result->isValid()) { $usersModel = new Application_Model_Users(); $user = $usersModel->getByLogin($result->getIdentity()); if($user->user_is_active == '2'){ $form->getElement('password')->addError('Compte bloque !!'); Zend_Auth::getInstance()->clearIdentity(); } else { if ($form->getValue('rememberMe') == 1) { // remember the session for 604800s = 7 days Zend_Session::rememberMe(604800); } else { // do not remember the session Zend_Session::forgetMe(); } Zend_Auth::getInstance()->getStorage()->write($user); } } else { $form->getElement('password')->addError('Wrong email or password provided. Please try again.'); } $errors = $form->getMessages(); if(count($errors)>0) { echo Zend_Json_Encoder::encode($errors); }else{ echo 'ok'; } } $this->view->form = $form;
[lang=php] protected function _authadapter(){ $dbAdapter = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('users') ->setIdentityColumn('user_email') ->setCredentialColumn('user_password'); return $authAdapter; }
Hors ligne
Donc pour rester au plus simple, pourquoi ne pas faire un test :
[lang=php] $idColumn = $this->_request->getParam('email') != null ? 'user_email' : 'user_phone'; $authAdapter = $this->_authadapter($idColumn);
[lang=php] protected function _authadapter($idColumn = 'user_phone'){ $dbAdapter = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('users') ->setIdentityColumn($idColumn) ->setCredentialColumn('user_password'); return $authAdapter; }
Hors ligne
Pages: 1