> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# $wsOptIn - Opt-In-Prozesse

> Modul $wsOptIn für Token-Prozesse: E-Mail-Verifizierung, Newsletter-Bestätigung und Passwort-Zurücksetzen über Opt-In-Links umsetzen.

Mit dem `$wsOptIn` Modul können Sie Token-basierte Opt-In-Prozesse im Frontend umsetzen. Typische Anwendungsfälle sind E-Mail-Verifizierung, Newsletter-Bestätigung oder Passwort-Zurücksetzen. In diesem Abschnitt erfahren Sie, wie Sie Opt-In-Links erstellen und die Token-Gültigkeit prüfen können.

***

## Modulübersicht

**Beispiel / Ausschnitt über** `$wsOptIn`

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $wsOptIn | json }}
```

**JSON-Ausgabe**

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "current": {
    "valid": true,
    "token": "..."
  },
  "createTokenUrl": "ƒ()"
}
```

Anmerkung: `ƒ()` kennzeichnet eine Funktion.

**Variablen und Methoden in der Übersicht:**

| **Variable**       | **Typ** | **Beschreibung**                                                                        |
| ------------------ | ------- | --------------------------------------------------------------------------------------- |
| `current`          | map     | Gibt eine Map mit Infos zum aktiven Token aus, falls dieser im Request übergeben wurde. |
| `valid`            | bool    | Gibt `true` aus, wenn der übergebene Token gültig ist.                                  |
| `token`            | string  | Gibt den übergebenen Token als Text aus.                                                |
| `createTokenUrl()` | string  | Erstellt eine Opt-In-URL mit einem sicheren Token.                                      |

***

## Templates

Typischerweise wird das `$wsOptIn` Modul bei Kontofunktionen wie zum Beispiel beim Passwort-Zurücksetzen, oder beim Konto erstellen verwendet.

***

## Variablen

### \$wsOptIn.current

Enthält Informationen zum Token, der in der aktuellen URL übergeben wurde. Ist `null`, wenn kein Token in der URL vorhanden ist.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if $wsOptIn.current }}
    // Token wurde übergeben
{{ /if }}
```

#### \$wsOptIn.current.valid

Gibt `true / false`aus, wenn der übergebene Token gültig / ungültig ist.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if $wsOptIn.current.valid }}
    // Token ist gültig
{{ else }}
    // Token ist ungültig oder abgelaufen
{{ /if }}
```

#### \$wsOptIn.current.token

Gibt den übergebenen Token aus.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
Token: {{= $wsOptIn.current.token }}
```

***

## Methoden

### \$wsOptIn.createTokenUrl()

Erstellt eine Opt-In-URL mit einem sicheren Token. Der Token wird automatisch generiert und an die angegebene URL angehängt. Diese URL kann dann per E-Mail an den Kunden gesendet werden.

**Signatur**\
`$wsOptIn.createTokenUrl(url, tokenName)`

**Rückgabe**\
`string` - URL mit angehängtem Token-Parameter.

**Parameter**

| **Name**    | **Typ** | **Pflicht** | **Beschreibung**                            |
| ----------- | ------- | ----------- | ------------------------------------------- |
| `url`       | string  | ja          | Basis-URL, an die der Token angehängt wird. |
| `tokenName` | string  | ja          | Name des Tokens. (z.B. `“verifyEmail”`)     |

**Beispiel,** das eine URL mit Token für die E-Mail-Verifizierung erstellt.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{= $wsOptIn.createTokenUrl($wsViews.viewUrl('account/verify.htm'), 'verifyEmail') }}
```

***

## Aktionen

Für `$wsOptIn` stehen keine Aktionen zur Verfügung.

***

## Beispiele für den Datenzugriff

### Bestätigung der E-Mail-Adresse per Opt-In-Link

Nach der Erstellung eines Nutzerkontos im Shop erhält der Nutzer eine E-Mail zur Bestätigung seiner E-Mail-Adresse, z.B.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<a href="{{= $wsOptIn.createTokenUrl($wsViews.viewUrl('account/emailVerify.htm', {}, 'absolute'), 'verifyEmail') }}">
  E-Mail-Adresse bestätigen
</a>
```

Der Bestätigungslink enthält einen Token, der sicherstellt, dass nur der Empfänger die Bestätigung durchführen kann.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.beispielshop.de/account/emailVerify.htm?token=abc123xyz
```

Wenn der Nutzer den Link klickt und die Bestätigungsseite (`emailVerify.htm`) geöffnet wird, wird geprüft, ob der Token gültig ist. Falls ja, kann er die Verifizierung durch einen Button-Click abschließen.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{{ if $wsOptIn.current }}
    {{ if $wsOptIn.current.valid }}
      Button zum Bestätigen
    {{ else }}
      Dieser Link ist nicht länger gültig.
    {{ /if }}
{{ else }}
    Ungültiger Zugriff auf die Bestätigungsseite.
{{ /if }}
```

***

## Weiterführende Links

* [Aktionen](/frontend/referenz/aktionen)
