The 2008-01-29 at 12:50 by Loïc d'Anterroches filed under Pluf - Framework en PHP5.
Les anglophones nomment cela row level permissions, pour les autres, bon la traduction n’est pas évidente.
Bon, si vous utilisez Pluf, vous avez certainement découvert le système de permissions. Il est basé sur le principe des groupes et des permissions individuelles. En gros, vous pouvez :
C’est simple et efficace, vous pouvez facilement faire quelque chose du genre :
if ($user->hasPerm('Monde.detruire_monde')) {
// appuyer sur le bouton rouge
}
Mais maintenant supposons que nous ayons plusieurs mondes, on fait comment pour donner des droits sur un monde et pas sur un autre ?
$user = new Pluf_User(1); // utilisateur un $monde = new Monde(3); // on prend le monde 3 Pluf_RowPermission:add($user, $monde, 'Monde.detruire_monde');
Maintenant, c’est sympa :
// $user n'a pas la permission sur tous les mondes
assert(false, $user->hasPerm('Monde.detruire_monde'));
// $user peut détruire le monde 3
$monde = new Monde(3);
assert(true, $user->hasPerm('Monde.detruire_monde', $monde));
// mais pas le monde 2
$monde2 = new Monde(2);
assert(false, $user->hasPerm('Monde.detruire_monde', $monde2));
Toujours aussi simple, souple et efficace ! Comme ce n’est pas une fonctionnalité intéressante pour tous et que cela nécessite 1 requête SQL supplémentaire quand on va chercher les permissions de l’utilisateur, il faut l’activer dans le fichier de configuration avec la clef ‘pluf_use_rowpermission’ mise à true.
$cfg['pluf_use_rowpermission'] = true;
Et pour ceux qui se posent la question, oui c’est pour permettre de donner des droits à un auteur sur un site particulier et pas un autre dans Plume 2.
Comments from readers