Bonjour à tous,

Voila je pense que le titre est assez explicite mais je vais apporter quelques détailles tout de même. En fait, mon form pour se logger se situe dans la topbar (j'utilise pour l'instant le bootstrap twitter et le form se trouve dans un dropdown), car je souhaiterais éviter de créer un page juste pour la connexion. Je trouve ça plus intuitif et classe ^^.

Mon code marche mais je pense qu'il y a moyen de faire mieux. Je vous donne mon code.
UsersController.php :

function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                $this->User->id = $this->Auth->user('id');
                $this->User->saveField('lastlogin', date('Y-m-d H:i:s'));
                $this->Session->setFlash('Vous êtes maintenant connecté à votre compte', 'notif');
                return $this->redirect($this->referer());
            }
            else{
                $this->Session->setFlash('Identifiants incorrects', 'notif', array('type' => 'error'));
                return $this->redirect($this->referer());
            }
        }
        else{
            $this->redirect('/');
        }
    }

Et voici le menu de ma topbar :

<ul class="nav secondary-nav">
    <li class="dropdown" data-dropdown="dropdown" >
        <?php if(!AuthComponent::user('id')): ?>
            <a href="#" class="dropdown-toggle">Connexion</a>
            <ul class="dropdown-menu">
                <?php echo $this->Form->create('User', array('action' => 'login')); ?>
                    <?php echo $this->Form->input('username', array('label' => $this->Html->image('login.png'), 'class' => 'UsernameLogin')); ?>
                    <?php echo $this->Form->input('password', array('label' => $this->Html->image('password.png'), 'class' => 'PasswordLogin')); ?>
                <?php echo $this->Form->end('Se connecter'); ?>
                <li><?php echo $this->Html->link('Devenir Casanaute', array('controller' => 'users', 'action' => 'signup', 'admin' => false)); ?></li>
            </ul>
        <?php else: ?>
            <a href="#" class="dropdown-toggle"><?php echo AuthComponent::user('username'); ?></a>
            <ul class="dropdown-menu">
                <li><?php echo $this->Html->link('Mon profil', array('controller' => 'users', 'action' => 'index', 'admin' => false)); ?></li>
                <li><?php echo $this->Html->link('Se déconnecter', array('controller' => 'users', 'action' => 'logout', 'admin' => false)); ?></li>
            </ul>
        <?php endif; ?>
    </li>
</ul>

Voila j'espère que c'est assez clair maintenant ? N'hésitez pas à donner votre avis sur ma méthode.
Au passage, j'ai lu quelques part l'idée de créer un component pour ça. Est-ce une bonne idée ou alors rien à voir du tout ?

Merci à tous de votre aide ;)

2 réponses


Grafikart
Réponse acceptée

Crée quand même une vue c'est toujours utile mais ton code est bon.

gwena
Auteur

ok dac graf'. Merci de ta réponse. Je vais suivre ton conseil et recréer un login.ctp