Voila je rencontre un petit problème avec mon code.

class AppController extends Controller {

public $components = array(
    'Session', 
    'Auth' => array(
                'loginRedirect' => array('controller' => 'DateLivraisonsProduits', 'action' => 'dlc'),
                'logoutRedirect' => array('controller' => 'Users', 'action' => 'login', 'homemk')
                ),  
    'Cookie', 'Security', 'Paginator', 'Flash', 'DebugKit.Toolbar', 'RequestHandler', 'Calcul');

public $helpers = array('Form', 'Html', 'Js', 'DateFr');

public function beforeRender() {
    parent::beforeRender();
    $this->loadModel('EncoursInventaire');
    $encours = $this->EncoursInventaire->find('first');

    $test = isset($encours['EncoursInventaire']['date_inventaire']) ? $encours['EncoursInventaire']['date_inventaire'] : null ;
    $this->set('menu_option', $test);
    //debug($encours);

    }

}

class UsersController extends AppController {

  public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add', 'logout');
    }

public function login() {

    if ($this->request->is('post')) {           
        if ($this->Auth->login()) {
            return $this->redirect($this->Auth->redirectUrl());
        } else {
            $this->Flash->error(__("Nom d'user ou mot de passe invalide, réessayer"));
        }
    }
}

<div class="users form row">

<?php echo $this->Flash->render('auth'); ?>
<?php

echo $this->Form->create('User'); ?>
<fieldset>
<legend><?php echo ('Add User'); ?></legend>
<?php
echo $this->Form->input('username', array('label' => 'Identifiant'));
echo $this->Form->input('password', array('label' => 'Mot de passe'));
?>
</fieldset>
<?php echo $this->Form->end(
('Se connecter')); ?>
</div>

Ce que je veux

J'ai tout fait comme dans la documentation, j'ai CakePHP 2.8

et j'obtient toujours false à ma demande $this->Auth->login();
et quand je mets $this->Auth->login($this->request->data) ca fonctionne, mais je n'arrive pas à acceder aux autres variables de ma table, cad 'role' et 'active' et 'id'

Merci de votre aide

4 réponses


Kareylo
Réponse acceptée

As-tu pensé à hasher le mot de passe lors de la création du compte ?

Bonjour,

Essaye de rajouter dans ton component Auth del'AppController :

                'Auth' => array(
                    'authenticate' => array('Form'),
                    'loginRedirect' => array('controller' => 'DateLivraisonsProduits', 'action' => 'dlc'),
                    'logoutRedirect' => array('controller' => 'Users', 'action' => 'login', 'homemk')
                     ),

http://book.cakephp.org/2.0/fr/core-libraries/components/authentication.html

xunk
Auteur

J'avais déjà essayé cela. Ca donne rien. Il y a peut etre un problème de configuration, mais je vois pas quoi !

xunk
Auteur

J'ai trouvé mon erreur, c'était effectivement le hashage, j'avais utilisé la méthode $this->Auth->password('admin') ; qui ne donne pas le meme hashage que la fonction hash() ; Merci de votre aide