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