# Een domein van de leverancier zelf

> Hoe de portal van een Pro-leverancier wordt aangeboden op portal.theircompany.com. De fallback-origine en productie catch-all route zijn actief.

Op Pro kan een leverancier hun eigen portal adres instellen in **Instellingen → Merkbeeld**, zoals `portal.theircompany.com` of `order.theircompany.com`. De leverancier wordt opgehaald vanaf dat host. Een persoon ziet nog steeds alleen een portal waar ze bij horen. Medewerkers melden zich aan op datzelfde adres en openen de werkruimte daar. Uitloggen brengt terug naar de inlogpagina van dat adres. Kopers openen nog steeds de handelsportal.

Gebruik `portal.` of `order.` in plaats van het blote domein. Het blote domein is waar de e-mail van de leverancier is ingesteld, en een CNAME daar kan die e-mailrecords verstoren. De app weigert een blote naam zoals `theircompany.com`.

`theirname.tradecatalog.app` en `tradecatalog.app/p/theirname` blijven werken. E-mail wordt nog steeds verzonden vanaf `orders@tradecatalog.app`. Pagina's op het adres van de leverancier sturen `X-Robots-Tag: noindex`. `/mcp`, `/oauth` en `/api/v1` blijven op `tradecatalog.app`.

## Verbind je adres

Open **Instellingen → Merkbeeld → Je portal adres** op Pro.

1. Kies **Gebruik je merkbeeld** om je naam, logo en kleuren op de inlogpagina, de portal, e-mails en besteldocumenten te zetten. Serviceinformatie blijft op de inlogpagina.
2. Voer een adres zoals `portal.theircompany.com` in en kies **Opslaan adres en merkbeeld**. Dit slaat het adres en merkbeeld samen op en start de controle.
3. Voeg de CNAME toe die verschijnt bij je DNS leverancier. Kopieerknoppen kopiëren de exacte naam en doel. Als je leverancier je domein automatisch toevoegt, voer dan alleen het deel voor je domein in **Naam**.
4. Volg **Adres opgeslagen**, **Domein geverifieerd** en **Beveiligde verbinding**. Hostnaam activering en certificaatuitgifte zijn aparte controles. Een geverifieerd domein betekent niet dat HTTPS klaar is.
5. Controles vernieuwen elke 30 seconden gedurende maximaal tien minuten terwijl deze pagina zichtbaar is. Kies **Controleer verbinding opnieuw** om te proberen na het aanpassen van DNS of als automatische controles zijn gestopt.
6. Zodra **Je certificaat is klaar** verschijnt, controleer of je CNAME naar het weergegeven doel wijst en gebruik **Open je inlogpagina** om te controleren of je eigen portal veilig opent voordat je het deelt. Leveranciersbereidheid verifieert niet onafhankelijk waar je registratieverkeer naartoe stuurt. Je bestaande portal link blijft beschikbaar tijdens de setup.

Nieuwe adressen gebruiken automatische HTTP certificaatvalidatie. Een verbindingstest kan veilig opnieuw proberen met een pendend certificaat op dezelfde hostnaam, zonder het te verwijderen. Oudere TXT setup kan overgaan naar HTTP validatie wanneer geschikt. Gedelegeerde en wildcard DNS validatie behouden hun bestaande methode.

Bij DNS validatie worden alle vereiste TXT waarden weergegeven, inclusief beide waarden wanneer twee records dezelfde naam delen. Delegatie CNAME records zijn een alternatief wanneer aangeboden. Houd de delegatie records voor vernieuwingen; een CNAME en TXT records kunnen niet dezelfde naam delen. Voor automatische HTTP validatie zijn extra DNS verificatie records beschikbaar onder **Extra certificaatverificatie records** in plaats van als een vereiste extra stap.

De pagina toont de tijd van de laatste controle en eventuele problemen die zijn gemeld door de certificaatservice. Een mislukte poging houdt uw huidige adres- en verificatiegegevens behouden. Als u hulp nodig heeft, gebruik dan **Hulp bij het verbinden van uw adres**. U hoeft de API-referenties van TradeCatalog niet te beheren of op te zoeken naar een verborgen platformknop.

Als u het opgeslagen adres leeg laat en **Adres verwijderen en merkgegevens opslaan** kiest, wordt het verwijderd. Wanneer het platform is verbonden met Cloudflare, wordt de oude aangepaste hostnaam daar ook verwijderd. Dit verandert uw DNS-instellingen bij de registrator niet.

## Voor platformbeheerders

De onderstaande secties beschrijven de infrastructuur van TradeCatalog, niet de stappen die leveranciers moeten voltooien. De fallback origin en de productie catch-all route zijn apart geconfigureerd. Verander geen providerreferenties of zone routes tijdens het volgen van de bovenstaande leveranciersinstellingen.

## Cloudflare voor SaaS

Doe dit op de `tradecatalog.app` zone, handmatig, wanneer u klaar bent om aangepaste domeinen in te schakelen. [Cloudflare voor SaaS activeren](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/enable/) voor die zone eerst.

### 1. Fallback origin

Aangepaste hostnaamverkeer wordt naar een fallback origin in uw zone gestuurd. Voor een Worker is dit record zonder oorsprong:

| Type | Naam       | Inhoud  | Proxy   |
| ---- | ---------- | ------- | ------- |
| AAAA | `fallback` | `100::` | Proxied |

Stel de fallback origin vervolgens in op `fallback.tradecatalog.app`. In de dashboard is dit **SSL/TLS → Aangepaste hostnamen → Fallback origin**. Met de API:

```
PUT /zones/{zone_id}/custom_hostnames/fallback_origin
{ "origin": "fallback.tradecatalog.app" }
```

Wacht tot deze fallback origin **Actief** is. Zie [Workers als uw fallback origin](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/start/advanced-settings/worker-as-origin/).

### 2. Worker route

Deze route is al opgenomen in de **productie** routes in `wrangler.jsonc`. Wrangler vervangt routes bij het implementeren, dus het verwijderen ervan zou ervoor zorgen dat een leveranciers eigen domein deze Worker niet bereikt. Voeg deze niet toe aan staging.

```json
{ "pattern": "*/*", "zone_name": "tradecatalog.app" }
```

Deze route stuurt elk hostnaam dat de zone binnenkomt naar deze Worker, inclusief het eigen domein van een klant. Meer specifieke routes winnen, dus laat de bestaande routes staan:

```json
{ "pattern": "tradecatalog.app", "custom_domain": true }
```

```json
{ "pattern": "*.tradecatalog.app/*", "zone_name": "tradecatalog.app" }
```

Laat de route van de staging Worker zoals deze is:

```json
{ "pattern": "staging.tradecatalog.app", "custom_domain": true }
```

Voeg `*/*` niet toe aan staging. Maak geen aangepaste hostnaam gelijk aan `tradecatalog.app`, `www.tradecatalog.app` of `fallback.tradecatalog.app`.

### 3. Aangepaste hostnamen API

De app roept de [aangepaste hostnamen API](https://developers.cloudflare.com/api/resources/custom_hostnames/methods/create/) aan wanneer een leverancier een adres controleert, en pas nadat deze zijn ingesteld op de productie Worker:

- `CLOUDFLARE_API_TOKEN` als geheim, met toestemming om aangepaste hostnamen en hun certificaten te bewerken
- `CLOUDFLARE_ZONE_ID` als de `tradecatalog.app` zone id

```
POST /zones/{zone_id}/custom_hostnames
{
  "hostname": "portal.theircompany.com",
  "ssl": { "method": "http", "type": "dv", "settings": { "min_tls_version": "1.2" } }
}
```

Status polling gebruikt `GET /zones/{zone_id}/custom_hostnames/{id}`. Een leverancier-initieerde verbindingstest kan veilig `PATCH` een pendende provider-beheerde DV-certificaat en daarna opnieuw de status lezen, terwijl de SSL-instellingen behouden blijven. Het verwijdert of hermaakt nooit een hostnaam. Actieve en geüploade aangepaste certificaten worden niet opnieuw gestart, en gedelegeerde of wildcard validatie blijft TXT. Het wissen of vervangen van een adres stuurt `DELETE` voor de vorige id.

Nieuwe adressen gebruiken HTTP-certificaatvalidatie: zodra de CNAME naar de fallback origin wijst, kan Cloudflare dit automatisch valideren. Bestaande adressen behouden hun oorspronkelijke validatiemethode tot deze wordt gewijzigd.

Platformmedewerkers kunnen **Adres controleren** uitvoeren voor elk bedrijf vanuit het klantaccount van dat bedrijf, en door het werkruimte te openen en Instellingen → Merkgegevens te gebruiken. **Certificaatvalidatie opnieuw instellen** is alleen voor platformmedewerkers. Het vraagt Cloudflare om de certificatiemethode in te stellen op HTTP. Als Cloudflare de methode niet kan wijzigen op de bestaande hostnaam, wordt de hostnaam verwijderd en opnieuw gemaakt met hetzelfde adres en certificaatinstellingen, en wordt de nieuwe id opgeslagen. De bevestiging zegt dat dit de live Cloudflare aangepaste hostnaam verandert. Terwijl het opnieuw instellen wordt uitgevoerd, toont de bevestigingsknop Resetten…, een spinner en kan deze niet opnieuw worden ingedrukt. Daarna toont de pagina de status en eventuele DNS-gegevens om te sturen naar de leverancier. Controleer het adres op het klantaccount doet hetzelfde terwijl de controle wordt uitgevoerd. Een leveranciershouder kan het opnieuw instellen niet uitvoeren.

Voor een adres dat nog steeds TXT of gedelegeerd gebruikt na een veilige poging, kiest de leverancier **Verbinding opnieuw controleren**, voegt elke certificaatrecord toe die onder **Deze records toevoegen** worden weergegeven bij de DNS-provider, en controleert opnieuw. DNS kan worden verbonden terwijl het certificaat nog deze records nodig heeft. Voeg geen enkele TXT-token in plaats van de andere wanneer twee worden weergegeven. Als gedelegeerd wordt aangeboden, gebruik dan de CNAME-records in plaats van conflicterende TXT-records. De app richt geen omleidingen om `/.well-known/acme-challenge/` of `/.well-known/pki-validation/` op die host. Laat deze paden onaangetast in elke omleidingsregel, zodat een certificaatcontrole niet wordt herschreven.

### Wat de klant toevoegt

Een CNAME voor `portal.theircompany.com` (of `order.`) die wijst naar `fallback.tradecatalog.app`.

Beveel deze naam aan. Een lege domeinnaam zoals `theircompany.com` kan geen normale CNAME zijn zonder het verplaatsen van e-mail, en de apex-proxy van Cloudflare is een aparte instelling. Gebruik deze niet.
