Salut tout le monde,

Je suis arrivé à la 7e et dernière partie des tutos, qui sont vraiment excellent. Complexe au début à comprendre quand on ne connait pas le MVC mais génial une fois compris.

Bref, je voulais savoir comment et ou peut-on gérer les permissions des users sur le menu.

Je m'explique:
user1 est admin
user2 est membre

J'ai un menu commun pour les 2 mais un onglet supplémentaire qui est "administration Avancé" que je veux rendre visible juste a user1 mais pas pour le user2.

Je voulais partir sur des conditions dans le default.php et checker onglet par onglet si il doit être visible ou non pour celui qui est identifié. Je penses pas que cela soit la meilleure solution, et c'est pour cela que je me tourne vers vous.

Merci d'avance.

6 réponses


djtec
Réponse acceptée

Moi j'afficherais le lien que si l'utilisateur qui est connecté à le rang désiré dans la session en fesant:

echo '<a href="#">Profil</a>';
echo '<a href="#">Me déconnecter</a>';
if($this->Session->read('User')->rang == 'admin') {
    echo '<a href="#">Administration avancé</a>';
}

Comme ça celui qui n'a pas le rang admin ne peut pas voir le lien Administration avancé mais les 2 verront les 2 premiers lien.

Stevens
Réponse acceptée

@djtec : Je chigne un peu, mais ça serait plutôt ça :

echo '<a href="#">Profil</a>';
echo '<a href="#">Me déconnecter</a>';
if($this->Session->User('rang') == 'admin') {
    echo '<a href="#">Administration avancé</a>';
}

Grafikart s'est fait chier à la créer :P Autant l'utiliser ^^

Personnellement, je gère mon menu depuis la fonction getMenu se trouvant dans le controller Pages. En suivant mon principe tu peux faire comme ceci :

PagesController.php

// blablabla
public function getMenu(){
       $p = array(
           'Blog',
           'PortFolio',                 
           'Contact',
           $this->Session->User('rang') == 'admin' ? 'Administration' : '',            
        );
        return $p;
    }
// blablabla

layout/default.php

<div class="menu">
   <a href="<?php echo BASE_URL; ?>"> <h3></h3></a>
      <ul class="nav">
      <?php $pagesMenu = $this->request('Page','getMenu') ?>
      <?php foreach($pagesMenu as $p): if($p != ''){ ?>
         <li><a href="<?php echo Router::url($p); ?>"><?php echo $p; ?></a></li>
      <?php } endforeach; ?>
      </ul>
</div>

@Stevens moi je fais toujours $this->Session->read('User')->rang

Et ça fonctionne parfaitement, ya pas de soucis ^^
Je suis tellement flemmard que quelques lettres en moins à écrire ça m'arrange :P

Mikachu
Auteur

Bah merci bcp les gars, je tenterais ça ce WE, tranquillement.

je te conseille d'utiliser les opérateurs binaires pour la gestions des droits:
http://www.siteduzero.com/tutoriel-3-32351-introduction-aux-operateurs-de-bits.html