Zend auth

From EKiniWiki

Jump to: navigation, search

[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";
    }
    
}
Personal tools
Bookmarks