From EKiniWiki
[edit] Sample Login / Logout Using Zend Framework
<?php
class AuthController extends Zend_Controller_Action
{
protected $_flashMessenger = null;
function init()
{
$this->view->baseUrl = $this->_request->getBaseUrl();
Zend_Loader::loadClass('Zend_Auth');
Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$this->view->user = Zend_Auth::getInstance()->getIdentity();
$this->_flashMessenger = $this->_helper->getHelper('FlashMessenger');
$this->initView();
}
/**
* Display login form and authenticate
*/
public function indexAction()
{
$this->view->page_title = "Log In";
$this->view->messages = $this->_flashMessenger->getMessages();
$this->render();
}
public function loginAction()
{
try {
if ($this->_request->isPost()) {
// collect the data from the user
Zend_Loader::loadClass('Zend_Filter_StripTags');
$f = new Zend_Filter_StripTags();
$username = $f->filter($this->_request->getPost('username'));
$password = $f->filter($this->_request->getPost('password'));
if (empty($username)) {
$this->_flashMessenger->addMessage('Provide a username.');
$this->_redirect('auth/');
} else {
// setup Zend_Auth adapter for a database table
Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$dbAdapter = Zend_Registry::get('dbAdapter');
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('users');
$authAdapter->setIdentityColumn('username');
$authAdapter->setCredentialColumn('password');
// Set the input credential values to authenticate against
$authAdapter->setIdentity($username);
$authAdapter->setCredential($password);
// do the authentication
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
// success: store database row to auth's storage
// system. (Not the password though!)
$data = $authAdapter->getResultRowObject(null, 'password');
$auth->getStorage()->write($data);
$user = Zend_Auth::getInstance()->getIdentity();
/*
SELECT
*/
$this->_flashMessenger->addMessage('Login Successful.');
$this->_redirect('/');
} else {
$this->_flashMessenger->addMessage('Login Failed. Please enter a valid username/password.');
$this->_redirect('auth/');
}
}
}
} catch (Exception $e){
echo $e->getMessage();
}
$this->view->messages = $this->_flashMessenger->getMessages();
$this->_helper->viewRenderer->setNoRender(); //suppress auto-rendering
}
function logoutAction()
{
$this->_flashMessenger->addMessage('You are now logged out.');
Zend_Auth::getinstance()->clearIdentity();
$this->_redirect('/');
}
function noaccessAction()
{
$this->view->page_title = "No Access";
}
}