Portare le superfici di ordine e prezzi su una destra

FixSecurityService
Shipped
27 agosto 2026 alle ore 16:21 UTC
Author
Kamo
Commit
45a1b63

I trentanove endpoint sono stati protetti solo da "hai firmato". Ogni ordine handler su POSController e ogni prezzo e gestore fiscale su CommerceMarketController ha letto l'org della sessione e non ha controllato nulla altro, così qualsiasi membro autenticato di qualsiasi ruolo potrebbe creare, modificare, rimborsare e re-status ordini, e riscrivere liste dei prezzi, sconti, classi fiscali, zone fiscali, Tassi fiscali e clienti, all'interno del proprio org. Mai cross-tenant — ruolo non significava niente lì. Il javadoc di QuoteController aveva detto così chiaramente. POSController, 11 endpoints: GET /orders e /orders/{} prendere VIEW ORDERS; POST /orders, PATCH /orders/{id}, PATCH /orders/{id}/status, POST /orders/{id}/returns, PATCH /returns/{id}/status and PATCH /fulfillments/{id} prendere MANAGE ORDERS. Due letture sono deliberatamente ACCESS COMMERCE piuttosto che VIEW ORDERS — GET /config è letto da PipelineView prima che conosca il membro verticale, e GET /accounts è la directory cliente del commercio condiviso la mago abbonamento e le iscrizioni scheda anche utilizzare, in modo da gating sia sull'ordine i diritti rifiutano i membri che legittimamente non toccano mai un ordine. ACCESS COMMERCE è la radice dell'albero POS: tutti con diritto commerciale lo tiene e tutti con nessuno è ora rifiutato. PUT /config prende MANAGE PRICING perché la riga che scrive porta citazioneConversionBilling. CommerceMarketController, 28 endpoint: letture di clienti, classi fiscali, zone fiscali, aliquote fiscali, sconti, listino prezzi e listino prezzi VIEW PRICING; ogni creazione, aggiornamento ed eliminazione su quei sette prende MANAGE PRICING. Sconti non erano nella lista del breve ma sedersi all'interno dello stesso blocco e uno sconto è un cambio di prezzo, quindi lasciandoli aperti sarebbe stato arbitrario. Nessun nuovo helper era necessario su CommerceMarketController: ha già esistente là, byte-identico a POSController's, ed è stato chiamato da NOTHING. Un aiuto Nessuno chiama legge in recensione esattamente come un controller che è sorvegliato. Gli undici gestori POSController vengono rimossi Non e' vero. il ratchet fallisce su voci stanti, così il il conteggio cade piuttosto che il file rotante. Il prezzo di CommerceMarketController i gestori non sono mai stati in quel file — le sue partite GUARD regex getCachedOrganizationId, quindi un gestore che risolve una sessione ma non controlla destra ha sempre guardato alla scansione. Questa è una vera limitazione della ratchet, non un divario in questo cambiamento. OrderAndPricingRightsGateTest pins tutti 39 per nome ed è stato testato mutazione: cancellando un assegno, scambiando MANAGE per VIEW su una scrittura, spostando un assegno dopo il servizio chiamata, sostituendo la sessione org con un letterale, mettendo una linea indietro la linea di base, e montando il 403 sopra il 401 ciascuno producono un nome distinto fallimento.

All changes

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo