GVN Group

FR EN Print 

   


 

Permissions: niveau simple

Niveau simple: Assigner des droits aux utilisateurs directement

Le niveau de permissions simple est efficace pour la gestion d'applications simples avec peu d'utilisateurs.

Un nombre croissant d'utilisateurs ainsi qu'une complexité plus grande des applications, en terme d'aire fonctionnelles et de droits, vous fera sûrement implémenter un niveau de permission supérieur.

Nous pouvons maintenant commencer à assigner des droits aux utilisateurs.

La vue fonctionnelle

Une première manière de faire est d'assigner des droits directement à un utilisateur. C'est une façon simple de gérer des permisions. Dans ce cas, nous utiliserons seulement certains des concepts de LiveUser.


Niveau simple

La «langue et les traductions» du niveau simple de gestion des permissions n'est pas encore prise en compte dans cette documentation. Nous n'y avons pas regardé car ce n'était pas dans nos priorités. Ceci cera examiné plus tard dans un contexte plus large que LiveUser.

La vue technique

Maintenant, nous pouvons passer du point de vue fonctionnel au point de vue technique.

Le graphique suivant montre quelles sont les tables LiveUser et les liens entre elles que nous devons construire pour assigner des droits directement aux utilisateurs.

Notez que les nombres dans les boites du graphique technique correspondent aux identifiants indiqués dans les exemples d'enregistrements des tables reprises dans ce document, de telle sorte que vous puissiez vous référer au graphique, pour une meilleure compréhension.


Accorder directement un droit à un utilisateur


La table «liveuser_userrights»

Il sera nécessaire de créer un enregistrement dans la table «liveuser_userrights» pour effectuer le lien entre un utilisateur et un droit. Il contiendra:

  • perm_user_id: l'identifiant d'utilisateur au niveau permission(perm_user_id)
  • right_id: l'identifiant du droit accordé à l'utilisateur
  • right_level: un niveau de droit: utilisé pour vérifier un accès basé sur la propriété d'un document. Utilisons la valeur 3 pour l'instant.
liveuser_userrights
perm_user_id right_id right_level
12 1 3

Le fichier de configuration

Pour pouvoir utiliser le système de permissions, le fichier de configuration doit contenir des informations relatives au conteneur (container) de permission «permContainer».

Download «conf.php»

   ...
        'permContainer' => array(
            'type' => 'Simple',
            'storage' => array(
                'MDB2' => array(                    // storage container name
                    'dsn' => $dsn,
                    'prefix' => 'liveuser_',        // table prefix
                    'tables' => array(),
                    'fields' => array(),
                    'alias'  => array()
                )
            )
        )
   ...

Nous utiliserons MDB2 pour accéder les données relatives aux permissions.

Le paramétrage requis est:

  • positionner le «type» à «Simple»
  • Définir «MDB2»

Notez la valeur de «prefix» positionnée à «liveuser_» car toutes les tables LiveUser commencent par «liveuser_».

Notez aussi que les vecteurs «tables», «fields» and «alias» ne sont pas paramétrables pour le moment.


Enumérer les droits

Pour plus de facilité, c'est une bonne idée d'énumérer les droits dans un fichier séparé. Voir outputRightsConstants pour générer ce fichier.

Ainsi, des constantes ont été définies avec leur «right_id» correspondant comme valeur.

Télécharger «eve_rights.php»

<?php
  define('EVE_VIEW',  1);
  define('EVE_CREATE',2);
  define('EVE_EDIT',  3);
  define('EVE_DELETE',4);
?>

Vérifier les droits des utilisateurs

Après l'identification vous vérifiez simplement si un droit particulier à été accordé à l'utilisateur. Vous pouvez alors lui fournir ou non un contenu particulier.

Télécharger «LU_test_rights.php»

   ...
    if (!$LU->checkRight(EVE_VIEW))
      {
      echo 'You are not authorized to view events';
      }
    else
      {
      echo 'You are authorized to view events';
      }
  ...

Testez-le

Utilisons «userF» défini dans la table «liveuser_users». Si aucun enregistrement associé n'est trouvé dans la table «liveuser_perm_users», aucun droit ne sera accordé à l'utilisateur.

Le résultat est:

Access denied

Maintenant, configurez les droits

Nous définirons un enregistrement dans la table «liveuser_perm_users» (avec perm_user_id=12) associé à «userF». Accordons un droit (EVE_VIEW a right_id=1) directement à perm_user_id (=12). Laissez right_level=3.

liveuser_perm_users
perm_user_id auth_user_id auth_container_name perm_type
12 25 0 1

liveuser_userrights
perm_user_id right_id right_level
12 1 3

L'utilisateur est maintenant autorisé à voir les informations d'événements. Voyez le résultat ci-dessous

Access granted