KamoCRM

Org-scope RetailService e..

Fixkamo-shared-library
Navios
23 de setembro de 2026 às 12:42 UTC
Autor
Kamo
Enviar
19505fa

Cada manipulador get/update/delete-by-uid sob comércioMarketController's varejista sub-recursos (categorias, marcas, atributos/valores, imagens, variantes, etiquetas, avaliações, clientes, níveis de clientes, classes de impostos/zonas/taxas, descontos, preço listas/entries, cartões de presente, locais, níveis de estoque/ajustamentos, transporte zonas/métodos, transportadores, remessas, carrinhos/carteiros, rascunhos de encomendas, encomendas notes) resolveu a linha através de uma pesquisa nuaById( uid)/ deleteById( uid), sem Verifique se a linha pertencia à organização do chamador. Qualquer autenticado membro de qualquer org poderia ler, editar ou apagar as linhas de outra organização adivinhar ou enumerar um UID - para clientes (sequencial Long IDs) isto foi um vazamento de PII de nome, e-mail e gastar; para cartões de presente, níveis de ações e carrinho total era escrever acesso ao dinheiro de outro inquilino e figuras de inventário. getMarketVendors tinha a mesma lacuna: seus irmãos POST/PUT/DELETE já resolveu o mercado via findByIdAndOrganizaçãoId, mas o GET não. Fixo por threading orgId em cada uma destas pesquisas: - Entidades com sua própria coluna de organização (a maioria delas) agora resolver através de um novo método de repositório findByUidAndOrganizaçãoId, espelhando ******************************* padrão (um @Query explícito, já que o campo id dessas entidades é 'uid', não 'id'). - Entidades sem coluna de organização própria (imagens/variantes de produto via seu produto, valores de atributos via seu atributo, itens de carrinho via seu carrinho, lista de preços entradas através de sua lista de preços) são escopos através de uma * **************************** consulta juntando-se à org do pai. - Um punhado de chaves estrangeiras create-time tomadas verbatim do corpo de solicitação (ID de mercado, ID de categoria-mãe, ID de nível de cliente, zona/classe fiscal, uma imagem/ligação cruzada variável, a transportadora/localização de uma remessa, um rascunho order's saved address) obteve a mesma pesquisa em org-scoped, fechando o mesmo classe de gap no tempo de escrita, não apenas no by-id read/update/delete. - procuraMarket e a nova procuraOferecendo (id, orgId) sobrecarga centralizar isto para cada manipulador de criação que anteriormente os chamava de desobstruídos. - getMarketVendors agora resolve seu mercado via findBy IdAndOrganizaçãoId antes de listar fornecedores, combinando seus próprios irmãos. Em todos os casos, uma linha de arquivos estrangeiros agora responde exatamente como uma que falta: mesmo exceção, mesma mensagem, mesma resposta HTTP o manipulador já produzido para um uid mau - nenhuma informação nova é vazada pela própria correção. atribuição em massa: updateGiftCard não aceita mais o valor atual do pedido de corpo. Nenhum tipo de direito de função existente (MANAGEM PRICING, MANAGEM ORDERS, ...) Abrange claramente o ajustamento manual do equilíbrio, por conseguinte, de acordo com a posição do coordenador instrução que não inventamos um; um membro do mesmo-org ainda pode editar o A carta é como antes. Nota para o coordenador: kamo-internal O diálogo de edição de cartões-presente MarketDiscountsTab.tsx envia o Balance atual hoje e que campo será agora silenciosamente ignorado - um ajuste-equilíbrio dedicado endpoint (espelho/níveis de ação/{uid}/ajustar) por trás de seu próprio direito é o corrigir certo e precisa de uma decisão de produto, não um novo RoleRightType unilateral. Também fixo de passagem ao re-derivar estas assinaturas: createShipment ler orderId do lugar errado (o controlador estava passando orgId posicionalmente onde orderId pertencia; a UI envia sempre orderId no Corpo POST) - agora lê ordem do corpo, que é o que cada chamador Já envia. Isto é uma solução funcional, não de segurança. Testes: RetailServiceOrgScopingTest e ************* cobrir um recurso representativo por padrão de repositório (coluna própria de org, via-parent join) com uma leitura/atualização/delete de org a correção e uma chamada do mesmo-org que sucede, mais a massa do presente-cartão- Regra de atribuição. Verificada pela mutação: revertendo as pesquisas para encontrarById made todos os nove testes "org estrangeiro" falham em vermelho; restaurados antes de commit.

Todas as alterações

Como o que vês no transporte?

Tudo isso chega em seu espaço de trabalho por conta própria. Comece no plano gratuito e leia esta página novamente em um mês.

Começar Livre Para SempreVer Preços