Bonjour,

J'ai suivis les tutoriels pour la création d'un site internet avec CakePHP.

Par contre, il m'est impossible de me connecter au panel admin. Dans les fichiers sources, il manque la table "users".

J'ai du la créer manuellement.

J'ai donc crée un utilisateur et un mot de passe, crypté en MD5.

Mais lorsque j'essaie de me connecter, ça me dis :

"Votre login ou votre mot de passe ne correspond pas".

Alors, je ne sais pas trop.

Voici la fonction login de mon controller :

function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                return $this->redirect($this->Auth->redirect()); 
            }else{
                $this->Session->setFlash("Votre login ou votre mot de passe ne correspond pas","notif",array('type'=>'error'));
            }
        }
    }

La view "login" :

<div class="page-header">
    <h1>Se connecter</h1>
</div>
<?php echo $this->Form->create('User'); ?>
    <?php echo $this->Form->input('username',array('label'=>"Login")); ?>
    <?php echo $this->Form->input('password',array('label'=>"Mot de passe")); ?>
<?php echo $this->Form->end('Se connecter'); ?>

Et le model "User" :

<?php 
class User extends AppModel{

    public $validate = array(
        'username' => array(
            'rule' => 'isUnique',
            'allowEmpty' => false,
            'message' => "Ce nom d'utilisateur est déja pris"
        ),
        'password' => array(
            'rule' => 'notEmpty',
            'message' => "Vous ne pouvez pas entrer de mot de pase"
        )
    );
    function beforeSave($options = array()){
        if(!empty($this->data'User']'password'])){
            $this->data'User']'password'] = AuthComponent::password($this->data'User']'password']);
        }
        return true; 
    }
}

En espérant obtenir de l'aide de votre part.

Cordialement,
DexX

2 réponses


cakePHP lorsqu'il essaye de t'authentifier hash le mot de passe en utilisant la clé de sécurité (security.salt & security.cypherseed dans le fichier App/Config/core.php)

lors de l'inscription dans la BDD il ne le fait pas, c'est pourquoi il faut dire a cakePHP de "hasher" le mot de passe en utilisant la clé de sécurité, pour ça utilise le composant "Security" et sa méthode "hash" en mettant le 3eme paramètre à true ( http://api20.cakephp.org/class/security#method-Securityhash)

Si je ne dit pas de bêtises, c'est dans ce tutoriel qu'en parle Grafikart : http://www.grafikart.fr/tutoriels/cakephp/membres-user-auth-260

en gros tu peut créer une action temporaire dans le controller user:

fonction t()
{
debug($this->Auth->password('LE MOT DE PASSE QUE TU VEUX'));
exit();
}

va sur tonsite/users/t
et le remplace dans ta base de donnée ton mot de passe par celui qui s'affiche. (tu vois que ça ressemble a du md5 mais ce n'est pas le md5 de sql)