Bonjour à tous,
Je rencontre des problèmes avec la fonction login du composant Auth. Quand je lui passe en paramètre un tableau avec les données de l'utilisateur (chargés a partir de ma table users), il n'y a aucun problème. Le composant charge bien les informations et me permet de les traiter. Par contre quand je ne lui met aucun paramètre, il me charge uniquement le username et le password de l'utilisateur.

Voici le code de mon AppController :

<?php
    class AppController extends Controller {

        var $components = array(
            'Session',
            'Cookie',
            'Auth' => array(
                'authenticate' => array(
                    'Form' => array(
                        'scope' => array('User.active' => 1)
                    )
                )
            ),
            'Email'
        );

        function beforeFilter() {
            $this->Auth->allow();
        }
    }

?>

Voici les deux variantes que je passe :

<?php
$this->Auth->login();
$this->Auth->login($user'User']);
?>

Voici le contenu de ma base de données :

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(15) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `mail` varchar(255) NOT NULL,
  `created` datetime NOT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '0',
  `statut` int(1) NOT NULL DEFAULT '1',
  `cgu` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Contenu de la table `users`
--
INSERT INTO `users` (`id`, `username`, `password`, `mail`, `created`, `active`, `statut`, `cgu`) VALUES
(1, 'admin', 'b73e01b8732ff12342e7afda9da94246e0535c08', 'admin@localhost', '2012-02-26 23:11:23', 1, 3, 1);

Et voici les deux tableaux auth retourné : (Sans arguments)

[Auth] => Array
        (
            [redirect] => /users/login
            [User] => Array
                (
                    [username] => admin
                    [password] => (password admin)
                )
        )

(Avec arguments) -> $this->Auth->login($user'User']) ($user est chargé sur ma table user)

[Auth] => Array
        (
            [redirect] => /users/login
            [User] => Array
                (
                    [id] => 1
                    [username] => admin
                    [password] => (password admin)
                    [mail] => admin@localhost
                    [created] => 2012-02-26 23:11:23
                    [active] => 1
                    [statut] => 3
                    [cgu] => 1
                )
        )

Comment faire pour que les données soient chargées automatiquemet ?

Cordialement, Titnome

3 réponses


Tit-LoW
Auteur
Réponse acceptée

Le problème est résolu.
Dans l'action users/login il fallait utiliser la commande $this->Auth->login(); sans paramètres. J'ai bien toutes mes informations.

login() sans rien ne marche pas

Tit-LoW
Auteur

Bonjour,
Oui je me suis trompé. En faite je fait :

$d = $this->request->data'User'];
$this->Auth->login($d)

Mais le problème reste le même.
Voici le formulaire :

<h1>Se connecter</h1>
<div class="contentCenter">
<?php
    echo $this->Form->create(array('controller' => 'users', 'action' => 'login')) . "\n";
    echo $this->Form->input('User.username', array('label' => 'Votre pseudo', 'class' => 'saisie')) . "\n";
    echo $this->Form->input('User.password', array('label' => 'Votre mot de passe', 'class' => 'saisie')) . "\n";
    echo '<div class="forget">';
    echo $this->Html->link("Pseudo ou mot de passe oublié ?", array(
        'controller' => 'users',
        'action' => 'forget'
    ));
    echo '</div>';
    echo "<div style=\"text-align : center;\">";
    echo $this->Form->submit('Se connecter', array('class' => "bouton"));
    echo "</div>";
    echo $this->Form->end();
?>
</div>