Utilisateurs et droits
Cinq tables portent les utilisateurs, les groupes et les droits :
| Table | Contenu |
|---|---|
BSPK_USER | Les utilisateurs web |
BSPK_USER_GROUP | Les groupes |
BSPK_USER_MEMBERSHIP | Qui appartient à quel groupe |
BSPK_USER_RIGHT | Les droits eux-mêmes |
BSPK_USER_RIGHT_RULE | La façon dont un droit est accordé |
Un droit est référencé depuis une page (userRightUuid, editRightUuid) et depuis un bloc (userRightNeeded).
WebUser est une entité
Ce n'est ni un objet, ni un sac de session : c'est une entité. Traitez-la comme telle. Elle a des attributs, et demander une propriété qui n'existe pas renvoie undefined au lieu de lever une erreur.
Les écrans d'administration utilisent un droit, pas un code écrit en dur
L'accès à /bweb/* passe par un droit ADMIN_<SLUG>. L'ancien code testait code = "DEV" ; ce n'est plus le modèle.
Deux échecs possibles, trompeurs tous les deux :
- une 404 causée par un
publishnul sur une URL d'administration : elle ressemble à une route manquante, c'est une page non publiée ; - une 403 sur tous les événements d'un écran d'administration tant que le droit n'est pas accordé : elle ressemble à un bouton cassé.
Les droits d'affichage ne sont pas un contrôle d'accès
userRightNeeded décide si un bloc est rendu. À lui seul, il ne protège pas les données : hidden envoie quand même le contenu au navigateur. Pour tout ce qui ne doit pas atteindre un visiteur non autorisé, utilisez notLoaded ou un droit au niveau de la page. Et rappelez-vous que le POST est revérifié quoi qu'il ait été affiché (voir La sécurité).
Un utilisateur dont le code est rempli peut disparaître des listes
Un vt_FirstRequest écrit code = '' écarte tous les utilisateurs qui ont un code, en silence et partout à la fois : liste, filtres, export, fusion. Si des utilisateurs manquent sur tous les écrans, regardez la première requête avant de regarder les droits.
Les sessions
La session de connexion est perdue au redémarrage de 4D : c'est pourquoi le dev-panel disparaît et qu'il faut repasser par /bweb/login. Un cookie de persistance n'est recréé que lorsqu'un utilisateur est réellement connecté ; sans cela, une déconnexion ne tiendrait jamais.
Voir aussi
- Les pages et le routage :
userRightUuid/editRightUuidsur la page - La sécurité : le contrôle exécuté à chaque POST

