# Passwort vergessen

<!-- last_modified: 17. Jun 2016 -->
Nach Drücken von "Paßwort vergessen" wird auf eine Seite geleitet (pwvergessen.htm), wo man die E-Mail, mit der man angemeldet ist, eingeben muß. Nach Prüfung wird ein DS im Container "Token" angelegt und eine E-Mail mit einem Link (Token und Email im Request) an die angegebene Adresse geschickt. Nach Klicken des Links öffnet sich eine Seite mit Paßwort-Eingabefeldern. Nach Prüfung der Token-Daten wird das neue PW in der Benutzerverwaltung gespeichert.

## Containeraufbau

| Feld | Typ |
|------|-----|
| Token | einfaches Textfeld |
| Erstelldatum | Datumsfeld |
| Email | einfaches Textfeld |
| BC | BC-Verknüpfung |
| Kontakt | Einzelverknüpfung mit Kontakt-Container |

## Actions anlegen
### pwvergessen.act

- Filteraction: prüft, ob's die angegebenen Email im Kontakt-Container gibt und ruft *savetoken.act* auf
- Weiterleitung auf Info-Seite

#### Beispiele

##### Actionbaustein "Container-Daten Filteraction"

Prüfen, ob's Email im "Kontakte" gibt

**list:** ID des Kontakte-Containers

**xml:**

```xml
<filter>
  <filter-object required="true">
    <field>Kontakt_Email</field>
    <type>4</type>
    <request-value>email</request-value>
  </filter-object>
  <limit max="1"/>
</filter>
```

**url:**

`savetoken.act?Token=<bx:tools.uuid/>&Kontakt=<bx:recorddata.id/>&BCVerknuepfung=<bx:recordfield.Kontakt_BC><bx:recorddata.id/></bx:recordfield.Kontakt_BC>&Erstelldatum=<bx:tools.urlencode><bx:tools.datum pattern="dd.MM.yyyy HH:mm"/></bx:tools.urlencode>&Email=<bx:recordfield.Kontakt_Email/>`

**failurl:**

`pwvergessen.htm?fehler=1&email=[[email]]`

##### Actionbaustein "Weiterleitung"

Weiterleitung

**destination:** mailverschickt.htm

### savetoken.act

- Speicheraction: erzeugt neuen Token-DS
- CMS-Seite verschicken: mit Link (mit Token und Email)

#### Beispiele

##### Actionbaustein "Container-Daten speichern"

Neuen Token-DS anlegen

**listid:** ID des Token-Containers

**recordidfield:** tokenid

**active**: ja

##### Actionbaustein "CMS-Seite versenden"

Email mit Token versenden

alle vorherigen Felder ensprechend ausfüllen

**file:** `pwemail.htm?tokid=[[tokenid]]`

### checkpw.act

- prüft, ob Paßwörter da und gleich sind
- Filteraction: sucht Token anhand von Parametern und Datum raus (prüfen, ob noch gültig), ruft *changepw.act* auf

#### Beispiele

##### Aktionsbaustein "vorhandene Bedingung abfragen"

Paßwörter da?

**requestField:** Passwort

**compareValue:** `#nodata`

**conditionTrue:** `changepw.htm?fehler=1&token=[[token]]&email=[[email]]`

##### Aktionsbaustein "vorhandene Bedingung abfragen"

Paßwörter gleich?

**requestField:** Passwort

**compareValue:** `[[Passwortwdhlg]]`

**conditionFalse:** `changepw.htm?fehler=2&token=[[token]]&email=[[email]]`

##### Aktionsbaustein "Container-Daten Filteraction"

prüfen, ob Token-DS gültig ist

**list:** ID des Token-Containers

**xml:**

```xml
<filter>
  <filter-object required="true">
    <field>Token</field>
    <type>4</type>
    <request-value>token</request-value>
  </filter-object>
  <filter-object required="true">
    <field>Email</field>
    <type>4</type>
    <request-value>email</request-value>
  </filter-object>
  <filter-object>
    <field>Erstelldatum</field>
    <type>4</type>
    <special-value days="-1">TODAY</special-value>
  </filter-object>
</filter>
```

**url:** `changepw.act?user=<bx:recordfield.BCVerknuepfung type="id"/>&Token=&tokid=<bx:recorddata.id/>&password=[[Passwort]]`

**failurl:** `changepw.htm?fehler=3`

##### Aktionsbaustein "Weiterleitung"

Weiterleitung

**destination:** ok.htm

### changepw.act

- PW ändern: ändert in der Benutzerverwaltung das Paßwort
- speichern: löscht den Token im Token-DS, DS selbst bleibt aber erhalten
- Weiterleitung an Info-Seite (Benutzer muß sich nun mit neuem Paßwort einloggen)

#### Beispiele

##### Actionbaustein "Intranet-User anlegen/ändern"

geändertes PW speichern

**Parametername des Benutzer-ID-Feldes:** user

**Parametername des Passwortfeldes:** password

##### Actionbaustein "Container-Datensatz speichern"

Container-Daten speichern

**listid:** ID des Token-Containers

**recordidfield:** tokid

## Seiten bauen

### pwvergessen.htm

Seite mit E-Mail-Eingabe, ruft *pwvergessen.act* auf, Ausgabe, wenn Email nicht gefunden

#### Beispiele

```html
<form action="pwvergessen.act" method="post">
  <label for="email">Ihre E-Mail-Adresse: </label>
  <input type="text" id="email" name="email" value="<bx:pagedata.request name="email"/>">
  <bx:pagedata.request name="fehler" value="1">Bitte geben Sie Ihre E-Mail-Adresse an.</bx:pagedata.request>
  <bx:pagedata.request name="fehler" value="2">Mit dieser Email sind Sie nicht angemeldet.</bx:pagedata.request>
  <br>
  <input type="submit" value="abschicken">
</form>
```

### mailverschickt.htm

Info-Seite, "So geht' weiter...", nachdem Email mit dem Token verschickt wurde

### changepw.htm

Seite mit Feldern zur Paßwortänderung, ruft checkpw.act auf, Ausgabe, wenn Token nicht mehr gültig

#### Beispiele

```html
<bx:pagedata.request name="fehler" value="3">Der Link aus der E-Mail ist nicht mehr gültig. Bitte fordern Sie einen neuen Link an.</bx:pagedata.request>
<form action="checkpw.act" method="post">
  <input type="hidden" name="token" value="<bx:pagedata.request name="token"/>">
  <input type="hidden" name="email" value="<bx:pagedata.request name="email"/>">
  <label for="Passwort">neues Paßwort:*</label>
  <input id="Passwort" type="text" name="Passwort" value=""> <bx:pagedata.request name="fehler" value="1">Bitte geben Sie Ihr Paßwort incl. Wiederholung an.</bx:pagedata.request><br>
  <label for="Passwortwdhlg" style="width:145px;">Paßwortwiederholung:*</label>
  <input id="Passwortwdhlg" type="text" name="Passwortwdhlg" value=""> <bx:pagedata.request name="fehler" value="2">Die beiden Paßwörter sind nicht gleich.</bx:pagedata.request><br>
  <input type="submit" value="speichern" style="margin-left:145px;">
</form>
```

### ok.htm

Info-Seite, "So geht' weiter...", nachdem PW erfolgreich geändert wurde

### pwemail.htm

Mail mit dem Token

#### Beispiele

```html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Paßwort vergessen</title>
</head>
<body>
<bx:containerloop.User pool="132AF649539" idfield="tokid" force="single">
<bx:recordfield.Kontakt>
Guten Tag, <bx:recordfield.Kontakt_Anrede/> <bx:if><bx:recordfield.Kontakt_Vorname/> </bx:if><bx:recordfield.Kontakt_Vorname/> <bx:recordfield.Kontakt_Name/>,
<br><br>
</bx:recordfield.Kontakt>
Sie hatten auf "Paßwort vergessen" geklickt. Wenn nicht, dann ignorieren Sie diese Mail.
<br><br>
Bitte folgenden Link anklicken - Sie können dann ein neues Paßwort vergeben. Dieser Link ist einen Tag gültig und nur einmal verwendbar.
<br>
**********************************************************************************************************************<br>
http://mrp.batix.net/www/nab/mitgliederbereich/changepw.htm?token=<bx:recordfield.Token/>&amp;email=<bx:recordfield.Email/>
**********************************************************************************************************************<br>
Bitte beachten Sie: Bei einigen Browsern und E-Mail-Programmen lässt sich der Link nicht anklicken. Sollte dies der Fall sein, kopieren Sie bitte den kompletten Link in die Adresszeile Ihres Browsers und bestätigen mit der Return-Taste.
<br><br>
Mit freundlichen Grüßen<br>
Das Notarzt-Börse-Team
</bx:containerloop.User>
</body>
</html>
```