5. Die Funktionen "Login", "Passwort zurücksetzen" und "Passwort ändern" im Frontend

5.1. Login eines Benutzers im Frontend

ConPresso bietet prinzipiell zwei Möglichkeiten zur Integration eines Logins im Frontend eines ConPresso-Projekts.

Variante 1

Leiten Sie den Besucher Ihres ConPresso-Projekts über einen Link einfach auf die Seite member.php der jeweiligen Rubrik, in die der Benutzer eingeloggt werden soll. Dabei spielt es keine Rolle, ob sich der Benutzer in eine geschlossene oder eine personalisierte Rubrik einloggen soll.

Da die Seite member.php beim Aufruf von geschlossenen Rubriken von ConPresso selbstständig aufgerufen wird, wird dieses Vorgehen in der Regel insbesondere beim Login in personalisierte Rubriken Verwendung finden. Beim Aufruf der Datei member.php werden von ConPresso automatisch die benötigten Login-Felder angezeigt.

Hat sich der Benutzer erfolgreich identifiziert, so steht ihm im gesamten Projekt der für seine Benutzergruppe zugängliche Content zur Verfügung. Ein erneutes Login für den Aufruf anderer personalisierter oder geschlossener Bereiche im Rahmen der eigenen Rechte ist nicht mehr notwendig.

Variante 2

Eine andere Möglichkeit die Login-Funktionalität in das ConPresso-Projekt zu integrieren besteht darin einen der folgenden Code-Abschnitte in eine der Header- oder Footer-Dateien einzufügen. Der Benutzer des Frontends muss in diesem Fall keine separate Seite für den Login-Vorgang aufrufen, da die Login-Felder an einer beliebigen Stelle eingeblendet werden können. Über die Anpassung der folgenden Beispiele kann das Formular vollständig den eigenen - vor allem visuellen - Vorstellungen entsprechend gestaltet werden.

Beispiel 16.1. Einfaches Login-Formular für das ConPresso-Frontend

<!-- start of login form -->
<form method="post" action="member.php">
   <input type="hidden" name="rubric" value="RUBRIK" />
   <input type="hidden" name="action" value="dologin" />

   <strong>Benutzername:</strong><br />
   <input type="text" name="username" /><br />

   <strong>Passwort:</strong><br />
   <input type="password" name="password" /><br />

   <input type="submit" value="Anmelden" />
</form>

<a href="member.php?action=password_reset&amp;rubric=RUBRIK">
    Passwort vergessen?</a><br />
<!-- end of login form -->

In diesem Beispiel nehmen Sie bitte die folgenden Anpassungen vor.

ZeileAnpassung
<form method="post" action="member.php">ggf. Pfad der member.php
<input type="hidden" name="rubric" value="RUBRIK" />Anpassung von Rubrikname oder -ID, hier: "RUBRIK"
<a href="member.php?action=password_reset&rubric=RUBRIK">Passwort vergessen?</a><br />Anpassung von Rubrikname oder -ID, hier: "RUBRIK" und ggf des Pfads zur member.php

Über die optionale Zeile

<a href="member.php?action=password_reset&amp;rubric=RUBRIK">
    Passwort vergessen?</a><br />

ermöglichen Sie nicht eingeloggten Benutzern den Aufruf der Funktion "Passwort zurücksetzen".

Das zweite Beispiel ist etwas komplexer, dafür aber auch etwas eleganter in Funktion und Umsetzung. Die Integration erfolgt jedoch auf die gleiche einfache Weise wie im vorherigen Beispiel. Kopieren Sie den folgenden Code-Abschnitt an die gewünschte Position in einer der Header- oder Footer-Dateien.

Beispiel 16.2. Optimiertes Login-Formular für das ConPresso-Frontend

<!-- end of login form -->
<?php
if (empty($_SESSION['SID_log_login_id'])) {
    echo '<form method="post" action="';
    echo _htmlspecialchars(BASE_REL.$directory).'/member.php">';
    echo '<input type="hidden" name="action" value="dologin" />';
    echo '<input type="hidden" name="rubric" value="';
    echo _htmlspecialchars($cpoRubric['id']).'" />';

    echo 'Benutzername:<br />';
    echo '<input type="text" name="username" /><br />';

    echo 'Passwort:<br />';
    echo '<input type="password" name="password" /><br />';

    echo '<input type="submit" value="Anmelden" />';

    if ($GLOBALS['cpoSystem']['send_pw']) {
        echo '<a href="member.php?action=password_reset&amp;rubric=';
        echo _htmlspecialchars($cpoRubric['id']).'">Passwort vergessen?</a>';
    }
    echo '</form>';
} else {
    echo 'Hallo '._htmlspecialchars($_SESSION['SID_user']['name']).'<br />';
    echo '<a href="member.php?action=password&amp;rubric=';
    echo _htmlspecialchars($cpoRubric['id']).'">&raquo; Passwort &auml;ndern</a>';
    echo '<br />';
    echo '<a href="member.php?action=logout&amp;rubric=';
    echo _htmlspecialchars($cpoRubric['id']).'">&raquo; Logout</a>';
}
?>
<!-- end of login form -->


Neben der Anzeige des Login-Formulars prüft dieser Code, ob der Benutzer eingeloggt ist. Ist dies der Fall, werden ihm die Optionen "Passwort ändern" und "Logout" angeboten.

Ist der Benutzer hingegen nicht eingeloggt, so wird neben den Eingabefeldern für Benutzername und Passwort die Option "Passwort zurücksetzen" angeboten.

[Anmerkung]Anmerkung

Beide der hier gezeigten Beispiele können selbstverständlich an eigene Bedürfnisse/Anforderungen angepasst werden. Weitere Informationen zur Bearbeitung der ConPresso Header- und Footer-Dateien finden Sie in Abschnitt 15, "ConPresso anpassen".

5.2. Funktion "Passwort zurücksetzen" im Frontend

Hat ein Benutzer der Rolle "Mitglied" sein Passwort vergessen, so kann ihm über die Login-Seite member.php die Funktion "Passwort zurücksetzen" zur Verfügung gestellt werden, über die der Benutzer ein neues Passwort anfordern kann.

Wird ein neues Passwort angefordert, so wird das Konto mit einem neuen Zufallspasswort versehen. Dieses wird an genau die E-Mail-Adresse geschickt, die im System dem angegebenen Benutzernamen zugeordnet ist, sofern für diesen Benutzer in der ConPresso-Benutzerverwaltung eine E-Mail-Adresse gespeichert wurde. Diese Funktion ist auf der Website der ConQuarium AG deaktiviert, um zu verhindern, dass die Passwörter zum Login verändert werden können

Sollte der Benutzer keine E-Mail mit dem neuen Passwort erhalten (z.B. weil sich seine in der ConPresso-Benutzerverwaltung eingetragene E-Mail-Adresse zwischenzeitlich geändert hat) oder er seinen Benutzernamen ebenfalls vergessen haben, so muss der Benutzer zwangsläufig den ConPresso-Administrator kontaktieren, um sich manuell ein neues Passwort setzen zu lassen.

[Anmerkung]Anmerkung

Der Benutzer kann auch direkt über einen Link auf die Seite member.php mit dem Parameter "action=password_reset" geleitet werden. (http://www.example.com/conpresso/_rubric/member.php?action=password_reset).

5.3. Ändern des Passworts über das Frontend

Da Benutzer der Rolle "Mitglied" sich nicht in ConPresso einloggen und damit nicht auf den Eintrag "Benutzer bearbeiten" (siehe Abschnitt 3.1, "Benutzer bearbeiten") zugreifen können, ist es notwendig, dass diese Benutzer ihr Passwort über das Frontend des Projekts ändern können.

Wird in einer der Header- bzw. Footer-Dateien das in Abschnitt 5, "Die Funktionen "Login", "Passwort zurücksetzen" und "Passwort ändern" im Frontend" aufgeführte Code-Beispiel 2 verwendet, so wird dem eingeloggten Benutzer automatisch die Option "Passwort ändern" angeboten. Diese Funktion ist auf der Website der ConQuarium AG deaktiviert, um zu verhindern, dass die Passwörter zum Login verändert werden können

[Anmerkung]Anmerkung

Der Benutzer kann auch direkt über einen Link auf die Seite member.php mit dem Parameter "action=password" geleitet werden. (http://www.example.com/conpresso/_rubric/member.php?action=password).