- Expédié
- 19 avril 2026 à 21:34 UTC
- Auteur
- Kamo
- Commite
- 7720191
Ferme l'intervalle "stale DB fuit une caractéristique désactivée" en portant chaque surface qui touche OrgFeature / ServiceType à travers le modèle de sécurité appliqué. (l'alimenteur primaire du frontal) OrgContext): remplace les caractéristiques brutes de la sérialisation par org.getFeatures()). L'auto- La boucle de provisionnement saute maintenant aussi apps le modèle ne brevete pas Nous ne créons jamais de lignes DB pour les applications bloquées. - FeatureController.list: retourne chaque fonctionnalité avec le modèleDisponibilité métadonnées verrouillées. Les lignes NON DISPONIBLES sont filtrées, lignes FORCE-ENABLED sont signalés comme activés - vrais - verrouillés - vrais quel que soit leur état DB. La liste disponible est également filtrée en applications que le modèle permet. - Nouvelle AppAvailabilityInterceptor et WebMvcConfig: installe un HandlerInterceptor sur chaque préfixe URL à portée de service (/api/security/pos, /api/sécurité/commerce-marchés, /api/sécurité/chefs-, /api/sécurité/lead- importations, /api/sécurité/marchés principaux, /api/sécurité/fournisseurs, :: Chaque demande est adaptée à un ServiceType, résolu par rapport au modèle appliqué de l'appelant, et rejeté avec HTTP 403 si l'application est effectivement éteinte. C'est la dernière ligne de défense: même avec un état client périmé, un contrôleur oublié, ou un appel API direct, une application bloquée retourne 403. Effet net: le modèle de sécurité appliqué gagne maintenant à l'heure de lecture partout les fonctionnalités ou les applications de l'org sont exposées - navigation, page d'accueil, paramètres Critères de décapage, FeaturesManager, par service. Quand l'administrateur bascule CRM à NON DISPONIBLE sur le modèle, l'UI CRM disparaît du frontend et les critères d'évaluation du CRM commencent 403's'''ing, que la DB ait encore ou non OrgFeature.isActive-vrai pour CRM.