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.
J'affecte ensuite ce profil "Consultant" aux utilisateurs (menu Habilitations | Utilisateurs) dont l'accès doit être limité.
Ensuite je limite l'accès aux fonctionnalités qui effectuent de mises à jour de données via de la programmation à deux niveaux :
- 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; ?>
<!-- ........ -->
- 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