Lecture seule (uniquement) à une base de données ....

19 views
Skip to first unread message

Thierry TJDM

unread,
Jul 5, 2021, 8:27:39 AM7/5/21
to ZnetDK
Bonjour,

L'interface d'authentification permet-elle de donner un accès à un utilisateur en lecture seule (uniquement) à une base de donnée, ou existe-il une astuce dans les fichiers de configurations ?

Merci.
Cordialement.
Thierry DM

Pascal Martinez

unread,
Jul 5, 2021, 5:56:21 PM7/5/21
to ZnetDK
Bonjour Thierry,

Il n'existe pas de possibilité de limiter l'accès en lecture seule à toute la base données en fonction de l'utilisateur connecté.

Pour répondre à ce besoin, j'enregistre un profil utilisateur (menu Habilitations | Profils) nommé par exemple "Consultant" dans lequel je sélectionne toutes les vues qui doivent être en lecture seule.
profils utilisateurs.png

J'affecte ensuite ce profil "Consultant" aux utilisateurs (menu Habilitations | Utilisateurs) dont l'accès doit être limité.
utilisateurs.png

Ensuite je limite l'accès aux fonctionnalités qui effectuent de mises à jour de données via de la programmation à deux niveaux :
  1. Au niveau des boutons d'action des vues de l'application ("Nouveau", "Supprimer", "Enregistrer", ...) en ne les affichant que si l'utilisateur n'a pas le profil "Consultant".
    J'utilise pour ça la méthode \AppController::isActionAllowed($action)

    Par exemple :

    <div class="zdk-action-bar" data-zdk-dialog="demo-crud-dlg" data-zdk-datatable="demo-crud-table">
          <!-- Action buttons -->
    <?php if (\app\controller\MyCtrl::isActionAllowed('save')) : ?>
          <button class="zdk-bt-add">New</button>
    <?php endif; ?>

                   <!-- ........ -->


  2. Au niveau des contrôleurs applicatifs en indiquant les actions du contrôleur dont l'accès est interdit si l'utilisateur dispose du profil "Consultant".
    J'ajoute pour ça au contrôleur la méthode app\Controller\MyCtrl::setAllowedActions(). dans laquelle j'invoque la méthode  \AppController::setForbiddenProfileForAction().

    Par exemple :

    class MyCtrl extends \AppController {
         static protected function setAllowedActions() {
              parent::setForbiddenProfileForAction('save', 'Consultant', 'myview');
          }
         //.................................. 
    }

En espérant avoir répondu.

Pascal

Tjdm Projets

unread,
Jul 6, 2021, 2:13:14 PM7/6/21
to ZnetDK


Bonsoir Pascal,

Merci pour la rapidité de votre réponse.
Je vais tester, dès demain, votre solution et je vous tiens au courant, bien évidemment.

Bien à vous
Thierry DM
Reply all
Reply to author
Forward
0 new messages