Est-ce qu’il existe un “mode maintenance” dans Simplicité qui permettrait d’interdire la connexion à l’application pour tous les utilisateurs sauf les utilisateurs qui ont la responsabilité “DESIGNER” par exemple ?
Non, pas de mode maintenance à proprement parler, mais sa réalisation via un PlatformHook qui bloquerait la connexion de tout autre utilisateur que le designer est assez facilement implémentable.
En tout cas c’est une fonctionnalité que je trouve intéressante, si vous pouvez l’implémenter directement dans Simplicité ça permettrait de l’utiliser sur d’autres projets sans devoir le redévelopper à chaque fois ^^
Lors de certaines mises à jour de nos applications nous avons besoin de faire des actions complémentaires à l’import du module comme l’exécution de requêtes SQL ou de traitements Java pour corriger la BDD. L’idée est alors la suivante :
Passer l’application en mode maintenance pour figer la BDD
Faire un dump de la BDD
Exécuter les requêtes et traitements pour corriger la BDD
Vérifier qu’il n’y a pas de problèmes une fois la BDD corrigée
Si on détecte un problème on restaure le dump de la BDD pour revenir à l’état avant le lancement des traitements.
On désactive le mode maintenance pour autoriser les utilisateurs à revenir sur l’application
Ce mode s’apparente au mode “sans clé de licence” qui filtre les rôles pour une autre raison mais ça revient un peu au même.
Si la licence est invalide, la UI filtre le rôle ADMIN qui ne peut plus accéder qu’à l’objet LicenseKey en mise à jour. Les autres users ont un simple message d’erreur de “licence invalide, veuillez contacter le support”.
On pourrait étendre ce comportement pour tester un mode maintenance et retourner un message d’erreur spécifique “Application en maintenance, réouverture du service à 16h”, via un param system en JSON qui donne une période de maintenance, une liste de rôle autorisés à passer, un message d’erreur à afficher. Ca filtrerai les rôles sans brider leurs fonctionnalités :
PLATFORM_MAINTENANCE = {
"enabled": true,
"until": "2023-01-17 16:00:00",
"msg": "The application is under maintenance until DATE",
"permitted": ["ADMIN", "OPERATOR"]
}