<?php
class AuthenticationController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// action body
}
public function loginAction()
{
if(Zend_Auth::getInstance()->hasIdentity()){
$this->_redirect('index/index');
}
$request = $this->getRequest();
$form = new Form_LoginForm();
if($request->isPost()){
if($form->isValid($this->_request->getPost())){
$authAdapter=$this->getAuthAdapter();
$username = $form->getValue('username');
$password = $form->getValue('password');
$authAdapter->setIdentity($username)
->setCredential($password);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if($result->isValid()){
$identity = $authAdapter->getResultRowObject();
$authStorage = $auth->getStorage();
$authStorage->write($identity);
$this->_redirect('index/index');
echo 'valid';
} else{
$this->view->errorMessage = 'username incorrect';
}
}
}
$this->view->form = $form;
}
public function logoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
$this->_redirect('index/index');
}
private function getAuthAdapter(){
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
$authAdapter->setTableName('users')
->setIdentityColumn('username')
->setCredentialColumn('password');
return $authAdapter;
}
}
//loginform.php
<?php
class Form_LoginForm extends Zend_Form
{
public function __construct($option = null) {
parent::__construct($option);
$this->setName('login');
$username = new Zend_Form_Element_Text('username');
$username->setLabel('username:')
->setRequired();
$password = new Zend_Form_Element_Password('password');
$password->setLabel('password :')
->setRequired(true);
$login = new Zend_Form_Element_Submit('login');
$login->setLabel('Login');
$this->addElements(array($username,$password,$login));
$this->setMethod('post');
$this->setAction(Zend_Controller_Front::getInstance().getBaseUrl().'/authentication/login');
}
}
//login/phtml
<br /><br /><center>View script for controller <b>Authentication</b> and script/action name <b>login</b></center>
<?php
echo $this->errorMessage;
echo $this->form;
//AccessCheck.php
<?php
class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract{
private $_auth = null;
private $_acl = null;
public function __construct(Zend_Acl $acl, Zend_Auth $auth)
{
$this->_auth = $auth;
$this->_acl = $acl;
}
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$resource = $request->getControllerName();
$action = $request->getActionName();
if(Zend_Auth::getInstance()->hasIdentity()){
$identity = $this->_auth->getStorage()->read();
$role = $identity->role;
if(!$this->_acl->isAllowed($role,$resource,$action)){
$request->setControllerName("authentification")
->setActionName("login");
}
}
else {
$request->setControllerName("authentification")
->setActionName("login");
}
}
}
?>
///users.php
<?php
/**
*
*/
class Model_DbTable_Users extends Zend_Db_Table_Abstract {
protected $_name = 'users';
public function addUser($nom, $password, $role)
{
if($role != 'admin' && $role != 'user'){
die('le role est incorrect');
return;
}
$data = array('username' => $nom, 'password' => $password, 'role' => $role);
$this->insert($data);
}
public function supprimerUser($id)
{
$this->delete('id = ' . $id);
}
}
//UsersController
<?php
class UsersController extends Zend_Controller_Action
{
public function listAction()
{
$users = new Model_DbTable_Users();
$this->view->user = $users->fetchAll();
}
public function addAction()
{
$form = new Form_UserAdd();
$this->view->form = $form;
if($this->getRequest()->isPost())
{
$fData = $this->getRequest()->getPost();
if($form->isValid($fData))
{
$nom = $form->getValue('nom');
$password = $form->getValue('password');
$role = $form->getValue('role');
$user = new Model_DbTable_Users();
$user->addUser($nom, $password, $role);
$this->_helper->redirector('list');
}
}
}
public function supprimerAction()
{
$id = $this->_getParam('id', 0);
$user = new Model_DbTable_Users();
$user->supprimerUser($id);
$this->_helper->redirector('list');
}
}