Search code examples
zend-frameworkzend-auth

Zend_Auth multiple credentials?


Login Form:

    $authAdapter    = Zend_Registry::get('authAdapter');
    $authAdapter
  ->setIdentity($formData['email'])
  ->setCredential($password)
  ->setCredential(1);

Bootstrap:

    protected function _initAuth(){
    $this->bootstrap('db');
    $this->bootstrap('session');

    $db             = $this->getPluginResource('db')->getDbAdapter();
    $auth           = Zend_Auth::getInstance();
    $authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'enabled');

    Zend_Registry::set('authAdapter', $authAdapter);
    return $authAdapter;
}

Obviously since adding 'enabled' its stopped working, if I remove:

->setCredential(1);

and 'enabled' from there:

($db, 'User', 'email', 'password', 'enabled');

it works just fine...

I would like to only enable users who have an enabled account to login though.

EDIT:

        $authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', '(?) AND `enabled` = 1');

works :)


Solution

  • You need to modify your adapter like so:

    $authAdapter = new Zend_Auth_Adapter_DbTable(
        $db,
        'user',
        'email',
        'password',
        'MD5(?) AND `enabled` = "true"');