Path E
Entitlement & delivery — personal access link
The buyer receives a personal delivery link, downloads purchased files, and accesses session resources from a single, unguessable URL.
What the visitor is trying to do
“I paid for a product or a deposit and I need to access what I bought — the download link or the session access instructions — without hunting through my email.”
Entry points
| Element | Destination |
|---|---|
| Email receipt delivery link | /acces/<token>/ |
| Return page access button | /acces/<token>/ |
| Stripe session — no direct link | (handled server-side) |
| Owner contract reference link | /acces/<token>/ |
Flow
flowchart LR
PAY["Payment settled (webhook)"] --> LINK["Mint delivery token"]
LINK --> EMAIL["Email: personal delivery link"]
EMAIL --> OPEN["/acces/<token>/"]
OPEN --> AUTH{"Token valid?"}
AUTH -- No --> ERR["410 expired or revoked"]
AUTH -- Yes --> DASH["Delivery page"]
DASH --> FILES["Download entitled files"]
DASH --> SESSION["Access session resources"]
DASH --> REV["Revoked entitlement"]
Screen inventory
| ID | Screen | User task |
|---|---|---|
| P0 | Email receipt | Receive delivery link |
| P1 | Webhook (machine) | Create entitlement + delivery token |
| P14 | Delivery page | View entitled products and download links |
| P14a | Download file | Download PDF or asset |
| P14b | Session resources | Access Office Hours join link or notes |
| P15 | Revocation notice | See “accès révoqué” when entitlement is revoked |
Flow scenario
Scenario E1
Download a purchased framework PDF
Trigger
- Buyer's payment is confirmed by the Stripe webhook
- An
Entitlementrow is created and a token is minted - Email receipt contains the delivery link
Experience
- The delivery page lists every entitled product.
- The buyer clicks “Télécharger” for a downloadable product.
- The server checks
revoked_atis null before serving the file. - For session products, the page shows a join link or the session notes.
- Download count is incremented and logged on the entitlement row.
Trust and safety rules
- Delivery tokens are unguessable and tied to a single
Entitlementrow. - A revoked entitlement (
revoked_atset) blocks both downloads and session access. - Files are served from
static/viaManifestStaticFilesStorage— no user-controlledMEDIA_ROOTpath. - Download counts are incremented atomically to avoid race conditions on parallel clicks.
- The delivery page never exposes raw file paths — only the resolved static URL.
- Delivery pages are blocked by
robots.txtand carry no editorial SEO value.
Interaction rules
- A revoked entitlement shows a “accès révoqué” notice instead of the file list.
- An expired or invalid token returns a 410 with a plain-language message.
- Session access links are single-use and time-limited where applicable.
- The page lists all entitled products even if only one was purchased, so the buyer never loses access to the wrong row.
Result states
| State | What the visitor sees | What happens next |
|---|---|---|
| Active | Delivery page with download links | Buyer downloads or accesses session |
| Revoked | “Accès révoqué” notice | Owner intervention required |
| Expired | 410 page with contact CTA | Buyer contacts support |
| Consumed | Download count reflects usage | No state change — access remains open |