Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-09-2014 10:12:32

tiger_dev
Nouveau membre
Date d'inscription: 10-09-2014
Messages: 2

Authentification a un espace privé avec zend_auth

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

 

#2 10-09-2014 12:35:48

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Authentification a un espace privé avec zend_auth

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

 

#3 10-09-2014 12:47:51

tiger_dev
Nouveau membre
Date d'inscription: 10-09-2014
Messages: 2

Re: Authentification a un espace privé avec zend_auth

Voici le code que j'utilise actuellement pour l'authentification:

Code:

[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;

Code:

[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

 

#4 11-09-2014 13:15:02

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Authentification a un espace privé avec zend_auth

Donc pour rester au plus simple, pourquoi ne pas faire un test :

Code:

[lang=php]
$idColumn = $this->_request->getParam('email') != null ? 'user_email' : 'user_phone';
$authAdapter = $this->_authadapter($idColumn);

Code:

[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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages