Witam,
kombinuję dzisiaj z Zend_Auth i coś mi nie idzie... Chciałbym, żeby oprócz standardowego sprawdzania nazwy i hasła w bazie spełniony był również warunek 'active = TRUE'.
Mam
kod z manuala, ale nie działa, logują się nieaktywowani użytkownicy...
Niżej mój kod. Wszystko jest ok, tylko zupełnie ignorowany jest warunek... Będę wdzięczny za pomoc.
<?php
class LoginController extends Main_Controller_Action
{
function indexAction()
{
if ($this->_request->isPost())
{
$f = new Zend_Filter_HtmlEntities(ENT_QUOTES);
$username = $f->filter($this->_request->getPost('user'));
$password = sha1($f->filter($this->_request->getPost('upasid')));
{
$this->view->message = 'Nie podano nazwy użytkownika.';
}
else
{
$db = Zend_Registry::get('db');
$authAdapter = new Zend_Auth_Adapter_DbTable($db,
'users',
'name',
'password',
' AND active = TRUE');
//$authAdapter->setTableName('users');
//$authAdapter->setIdentityColumn('name');
//$authAdapter->setCredentialColumn('password');
$authAdapter->setIdentity($username);
$authAdapter->setCredential($password);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
switch ($result->getCode())
{
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
//nieistniejący użytkownik
$this->view->message = 'Użytkownik o podanym loginie nie istnieje.';
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
//niepoprawne hasło
$this->view->message = 'Nieprawidłowe hasło.';
break;
case Zend_Auth_Result::SUCCESS:
//sukces
if ($result->isValid())
{
$data = $authAdapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$this->_redirect('somewhere');
};
break;
default:
//to do
break;
};
};
};
}
}
?>