1 вариант
Использовать
Zend_Acl2 вариант
Задать дополнительное условие в SQL запросе авторизации:
$authAdapter->getDbSelect()->where('status = "admin"');
Кстати, лучше не подменять пароль на его MD5 хеш вот так:
$authAdapter->setIdentity($email)->setCredential(md5($password));
а сделать вот так:
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
// указываем таблицу, где необходимо искать данные о пользователях
// колонку, где искать имена пользователей, а также колонку, где хранятся пароли
$authAdapter->setTableName('users')
->setIdentityColumn('email')
->setCredentialColumn('password')
->setCredentialTreatment('MD5(?)');
// получаем введённые данные
$email = $this->getRequest()->getPost('email');
$password = $this->getRequest()->getPost('password');
// подставляем полученные данные из формы
$authAdapter->setIdentity($email)
->setCredential($password);
// получаем экземпляр Zend_Auth
$auth = Zend_Auth::getInstance();
// делаем попытку авторизировать пользователя
$result = $auth->authenticate($authAdapter);
или ещё короче:
$authAdapter = new Zend_Auth_Adapter_DbTable(
Zend_Db_Table::getDefaultAdapter(),
'users', 'email', 'password', 'MD5(?)'
);
// получаем введённые данные
$email = $this->getRequest()->getPost('email');
$password = $this->getRequest()->getPost('password');
// подставляем полученные данные из формы
$authAdapter->setIdentity($email)
->setCredential($password);
// получаем экземпляр Zend_Auth
$auth = Zend_Auth::getInstance();
// делаем попытку авторизировать пользователя
$result = $auth->authenticate($authAdapter);