27 lines
1.0 KiB
Go
27 lines
1.0 KiB
Go
package controllers
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
// isAppRequest reports whether a request arrived on the customer app's base.
|
|
//
|
|
// Several handlers are registered on both `/v1/web/...` and `/v1/mob/...`, and
|
|
// a few of them owe the two callers different answers. The clearest case is
|
|
// stock: the console lists a product with an empty shelf so a merchant can
|
|
// refill it, and the app must not list the same product at all, because a
|
|
// shopper can only choose it and be refused at checkout.
|
|
//
|
|
// The base is read from the path rather than passed down through the service,
|
|
// so the difference stays where it belongs — at the edge, in the one place that
|
|
// knows which audience asked. Services keep answering the same question the
|
|
// same way for everyone.
|
|
//
|
|
// Matched with the surrounding slashes so a tenant, product or keyword
|
|
// containing "mob" cannot make a console request look like an app one.
|
|
func isAppRequest(c *fiber.Ctx) bool {
|
|
return strings.Contains(c.Path(), "/v1/mob/")
|
|
}
|