- Expédié
- 23 septembre 2026 à 12:42 UTC
- Auteur
- Kamo
- Commite
- 19505fa
Chaque gestionnaire de décrochage/mise à jour/supprimé par uid sous CommerceMarketContrôleur de détail sous-ressources (catégories, marques, attributs/valeurs, images, variantes, étiquettes, les avis, les clients, les niveaux de clients, les classes/zones/tarifs, les rabais, les prix Listes/entrées, cartes-cadeaux, emplacements, niveaux/ajustements de stocks, expédition zones/méthodes, transporteurs, expéditions, paniers/cartiers, projets de commande, commande notes) résolue la ligne à travers un narreById(uid)/supprimerById(uid), sans vérifier que la ligne appartenait à l'organisation de l'appelant. Toute authentifiée membre de tout organisme pourrait lire, éditer ou supprimer les lignes d'une autre organisation en deviner ou d'énurer un uid - pour les clients (séquentiels longs ids), c'était a Manque de nom, de courrier électronique et de dépense; pour les cartes-cadeaux, les niveaux de stock et le panier les tours, il était l'accès à l'argent d'un autre locataire et aux chiffres d'inventaire. getMarketVendors avait le même écart: ses frères et sœurs POST/PUT/DELETE déjà a résolu le marché via findByIdAndOrganizationId, mais l'EG ne l'a pas fait. Fixé par filage orgId dans chacune de ces recherches: - Les entités dont la colonne est leur propre organisation (la plupart d'entre elles) sont maintenant résolues par le biais d'une nouvelle méthode de dépôt de findByUidAndOrganizationId, en miroir , modèle existant (un champ explicite «Query, puisque le champ d'identification de ces entités» est 'uid', pas 'id'). - Entités dépourvues de colonne d'organisation propre (images/variantes de produits) via leur produit, les valeurs d'attribut via leur attribut, les articles de panier via leur panier, les entrées de liste de prix via leur liste de prix) sont classés par le biais d'un nouvelle, requête rejoignant l'ordre de l'organisme de tutelle. - Une poignée de clés étrangères créées à temps pris in extenso de l'organe de demande; (un id de marché, une id de catégorie mère, un id de niveau client, une zone/classe d'impôts, une liaison image/variante, un transporteur/un emplacement d'expédition, un avant-projet l'adresse sauvegardée de l'ordre) a obtenu la même recherche d'org-arpe, fermant la même classe de gap au moment de l'écriture, pas seulement à l'adresse suivante: by-id read/update/delete. - la rechercheMarket et la nouvelle rechercheOffering(id, orgId)centralisation de la surcharge Ceci pour chaque gestionnaire de création qui les appelait auparavant unscope. - getMarketVendors résout désormais son marché via findByIdAndOrganizationId avant de répertorier les fournisseurs, en correspondance avec ses propres frères et sœurs. Dans tous les cas, une ligne d'orge étrangère répond maintenant exactement comme une ligne manquante: exception, même message, même réponse HTTP que le gestionnaire déjà produit pour une mauvaise uid - aucune nouvelle information n'est divulguée par la solution elle-même. Affectation de masse: mise à jourGiftCard n'accepte plus currentBalance à partir du l'organisme de demande. Pas de type "Rythme" existant (MANUER-PRICING, MANAGE-ORDERS, ...) couvre clairement l'ajustement manuel du solde, de sorte que pour la durée du coordonnateur l'instruction nous n'avons pas inventé un; un membre du mêmeorg peut toujours éditer le Les autres champs de la carte sont exactement comme avant. Note à l'intention du coordonnateur: kamo-internal's MarketDiscountsTab.tsx cadeau-carter le dialogue envoie currentBalance aujourd'hui et ce champ sera désormais ignoré silencieusement - un équilibre d'ajustement spécifique le critère d'évaluation (miroir/niveaux de stock/-uid-/adjust) en dessous de son propre droit est la bonne fixation et nécessite une décision de produit, pas un nouveau type de rôle unilatéral. Également corrigé en passant tout en re-dernois ces signatures: createShipment lire orderId à partir du mauvais endroit (le contrôleur passait orgId positionnellement là où orderId appartenait; l'interface utilisateur envoie toujours orderId dans le POST body) - il lit maintenant l'ordreId du corps, ce qui est ce que chaque appelant déjà envoyé. Il s'agit d'une solution fonctionnelle, pas d'une solution de sécurité. Épreuves: RetailServiceOrgScopingTest et couvrir une ressource représentative par motif de dépôt (bulle gisement, via-parent join) avec un ordre de jour/mise à jour/supprimer étranger qui échoue sans la solution et un appel de même or qui réussit, plus la masse de la carte-cadeau-masse- règle d'attribution. Mauvaisification: retournement des recherches à trouverById les neuf tests "orgives étrangères" échouent en rouge; restauré avant l'engagement.
