Zend

idtrois Messages postés 6 Date d'inscription lundi 26 janvier 2015 Statut Membre Dernière intervention 7 février 2015 - Modifié par jordane45 le 7/02/2015 à 15:48
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 8 févr. 2015 à 17:05
je suis entrain faire une authentification en zend framework ,mais ça n'a rien affiche et voici le code complet S'il vous palit detecter moi les erreurs , je doit soutenir mon projet demain , Urgent , Merci d'avance


AuthenticationController

<?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') ;

} else {
$this->view->errorMessage = 'le nom ou le mot de passe incorrect';
}

}

}
$this->view->form = $form;


}

public function logoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
$this->_redirect('index/index');
}
public function getAuthAdapter()
{
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
$authAdapter->setTableName('user')
->setIdentityColumn('username')
->setCredentialColumn('password');

return $authAdapter;
}

}



userController

  <?php

class UserController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }
 
  public function listAction()
    {
        $user  = new Model_DbTable_User();
   $this->view->user = $user->fetchAll();
    }

    public function addAction()
    {
        
    }

    public function supprimerAction()
    {
        
    
    }


}


loginform.php
   <?php
   class Form_Login extends Zend_Form
   {
     public function __construct($option = null)
    {
     parent::__construct($option);
        $this->setName("login");
  
  $username = new Zend_Form_Element_Text('username');
  $username->setRequired()
     ->setLabel("Nom : ");
     
  $password = new Zend_Form_Element_Password('password');
  $password->setRequired()
     ->setLabel("Mot de passe : ");
     
  $send = new Zend_Form_Element_Submit('send');
  $send->setLabel("Envoyer");
  
  $this->addElements(array($username,$password,$send));
  
  $this->setMethod("POST");
  $this->setAction(Zend_Controller_Front::getInstance()->getBaseUrl().'/authentication/login'); 
  }
   }



user.php
    <?php

class Application_Form_User extends Zend_Form
{

    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
    }

     public function __construct($option = null)
    {
     parent::__construct($option);
     $this->setName('User');
        $id = new Zend_Form_Element_Hidden('id');
        $id->addFilter('Int');

        $username  = new Zend_Form_Element_Text('username');
        $username->setRequired(true)
            ->addFilter('StringTrim')
            ->addFilter('StripTags')
            ->setLabel('Nom : ');

        $password  = new Zend_Form_Element_Text('password');
        $password->setRequired(true)
            ->addFilter('StringTrim')
            ->addFilter('StripTags')
            ->setLabel('mot de passe : ');
   
  $role  = new Zend_Form_Element_Text('role');
        $role->setRequired(true)
            ->addFilter('StringTrim')
            ->addFilter('StripTags')
            ->setLabel('le role (admin ou user) : ');
   

        $send = new Zend_Form_Element_Submit('submit');

        $this->addElements(array($id,$username,$password,$role,$send));
            
    }

}




LibraryAcl.php
  <?php
  class Moel_LibraryAcl extends Zend_Acl{
     public function __construct(){
  
     $this->add(new Zend_Acl_Resource('index'));
  
  
  $this->add(new Zend_Acl_Resource('client'));
  $this->add(new Zend_Acl_Resource('list'),'client');
  $this->add(new Zend_Acl_Resource('ajouter'),'client');
  $this->add(new Zend_Acl_Resource('modifier'),'client'); 
  $this->add(new Zend_Acl_Resource('supprimer'),'client');
  
  $this->add(new Zend_Acl_Resource('produit'));
  $this->add(new Zend_Acl_Resource('list'),'produit');
  $this->add(new Zend_Acl_Resource('ajouter'),'produit');
  $this->add(new Zend_Acl_Resource('modifier'),'produit'); 
  $this->add(new Zend_Acl_Resource('supprimer'),'produit');
  
  $this->add(new Zend_Acl_Resource('achat'));
  $this->add(new Zend_Acl_Resource('list'),'achat');
  $this->add(new Zend_Acl_Resource('ajouter'),'achat');
     $this->add(new Zend_Acl_Resource('modifier'),'achat'); 
  $this->add(new Zend_Acl_Resource('supprimer'),'achat');
  
  $this->add(new Zend_Acl_Resource('user'));
  $this->add(new Zend_Acl_Resource('add'),'user');
  $this->add(new Zend_Acl_Resource('list'),'user');
  $this->add(new Zend_Acl_Resource('supprimer'),'user'); 
  
 
  $this->addRole(new Zend_Acl_Role('user'));
  $this->addRole(new Zend_Acl_Role('admin'),'user');
 
  
  $this->allow('user','index');
  $this->allow('user','client','list');
  $this->allow('user','produit','list');
  $this->allow('user','achat','list');
  
  
  }
  }



la table user
    <?php

class Application_Model_DbTable_User extends Zend_Db_Table_Abstract
{

    protected $_name = 'user';
 
 public function addUser($username, $password, $role)
 {
  if($role != 'admin' && $role != 'user'){
   die('le role est incorrect');
   return;
  }
  
  $data =  array('username' => $username, 'password' => $password, 'role' => $role);
  $this->insert($data);
 }
 
 
 public function supprimerUser($id)
 {
  $this->delete('id = ' . $id);
 }
 

}


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("authentication")
            ->setActionName("login");
       }
        }
  
  else {
   $request->setControllerName("authentication")
           ->setActionName("login"); 
  }
 
 
 }
   
  }



Bootstrap .php
     <?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

 protected function _initAutoload() {

  $autoloader = new Zend_Application_Module_Autoloader( array(
      'namespace' => '', 
      'basePath' => APPLICATION_PATH));
     
  //Zend_Session::start();    
  $acl  = new Model_MagazinAcl();
  $auth = Zend_Auth::getInstance();
   
      
  $fc = Zend_Controller_Front::getInstance();
  $fc->registerPlugin(new Plugin_AccessCheck($acl,$auth));    

  return $autoloader;
 }

  
}




EDIT : ajout des balises de code manquantes pour séparer les différents class !

3 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
7 févr. 2015 à 15:46
Bonjour ( si si ça se dit.. !!!! )


Bon... déjà... l'urgence ici n'est que pour toi.... nous le préciser ne nous fera pas intervenir plus vite......

Ensuite.. tu nous dis que ça ne fonctionne pas et tu nous balances les 350 lignes de ton code... tu penses vraiment qu'on va s'amuser à toutes les regarder pour voir si tu n'aurais pas fait une erreur ??????!

Je pense que le mieux, si tu souhaites avoir une réponse (rapide).. ça serait déjà :
- Nous indiquer en quoi ça ne fonctionne pas
- Nous indiquer si tu as des messages d'erreurs... lesquels...
- Nous indiquer, selon toi, quelle partie du code ne marche pas.




0
idtrois Messages postés 6 Date d'inscription lundi 26 janvier 2015 Statut Membre Dernière intervention 7 février 2015
Modifié par jordane45 le 7/02/2015 à 16:07
Je pense que les erreurs sont ici dans ces deux fichiers

loginform.php

<?php
class Form_Login extends Zend_Form
{
public function __construct($option = null)
{
parent::__construct($option);
$this->setName("login");

$username = new Zend_Form_Element_Text('username');
$username->setRequired()
->setLabel("Nom : ");

$password = new Zend_Form_Element_Password('password');
$password->setRequired()
->setLabel("Mot de passe : ");

$send = new Zend_Form_Element_Submit('send');
$send->setLabel("Envoyer");

$this->addElements(array($username,$password,$send));

$this->setMethod("POST");
$this->setAction(Zend_Controller_Front::getInstance()->getBaseUrl().'/authentication/login');
}
}


Bootstrap .php
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

 protected function _initAutoload() {

  $autoloader = new Zend_Application_Module_Autoloader( array(
      'namespace' => '', 
      'basePath' => APPLICATION_PATH));
     
  //Zend_Session::start();    
  $acl  = new Model_MagazinAcl();
  $auth = Zend_Auth::getInstance();
   
      
  $fc = Zend_Controller_Front::getInstance();
  $fc->registerPlugin(new Plugin_AccessCheck($acl,$auth));    

  return $autoloader;
 }





EDIT (encore): ajout des balises de code manquantes pour séparer les différents fichiers !
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 4
8 févr. 2015 à 17:05
Bonjour,

Je vois que vous avez créé le form "dans les clous"...

Par contre, avez-vous une vue associée à votre formulaire?

Dans loginAction vous instanciez un $form et vous faites bien ceci en fin d'action:

....
 $this->view->form = $form;
....


Il vous faut ceci dans la vue login:

<?php
if(isset($this->form)) {
   echo $this->form;
}
?>


Cdlt
0
Rejoignez-nous