Open urien opened 2 years ago
L'affichage dans le document parent ne pose pas de pb, il faudrait voir pourquoi la mention en attente de validation n'apparait pas
Il y a tout un travail de refactorisation pour simplifier l'accès aux ressources historisées (documents, entrées, caves...). Des fois les contrôleurs demandent bien les données avec isValidated: true
ou/et isDeleted: false
mais ce n'est pas consistant à travers tout le code...
De mon expérience de ces derniers mois, ce problème de gestion de isDeleted / isValidated est vraiment récurrent et pénible à gérer.
Je pense que le plus simple c'est de rendre ça automatique dans le MappingService, avant d'envoyer la réponse au client. Comme ça on ne gère plus du tout isDeleted dans les services et dans les controllers. Le MappingService vérifiera toutes les requêtes sortantes :
- Si l'utilisateur à les droits "view deleted" sur les différentes entités (ou "view not validated"), alors le middleware ne touche à rien.
- Sinon, il supprime les données deleted avant d'envoyer le résultat à l'utilisateur.
Vu que les réponses customisées sont désormais en place et utilisées partout dans l'API (res.ok()
notamment), je pense que c'est plus judicieux de filtrer les données là-bas plutôt que dans le MappingService. C'est d'ailleurs ce qui est fait pour les cavités sensibles, grâce à un helper.
J'ai voulu utilisé un hook Sails pour filter toutes nos requêtes sortantes comme expliqué ici : https://sailsjs.com/documentation/concepts/extending-sails/hooks/hook-specification/routes
En utilisant un hook, la vérification serait automatique sur toutes les routes et on n'aurait pas besoin de charger le MappingService de faire ça.
Cependant, je n'ai pas réussi à l'implémenter et je crois être tombé sur un bug de Sails. J'ai créé un ticket chez Sails ici : https://github.com/balderdashy/sails/issues/7222
J'importe des documents via l'import CSV, il apparaissent dans la liste des documents à valider mais ils sont également accessibles dans le document parent et lorsqu"on affiche leur page, sans indication que c'est en attente de validation