13 Community-Funktionen
Mit den Community-Funktionen können sich Frontend-User registrieren, anmelden, ihr Profil pflegen und selbst Inhalte anlegen – Kommentare, Bewertungen, Anzeigen, Bilder. Geschützte Bereiche und Dateien stehen nur angemeldeten Frontend-Usern offen, ein Warenkorb merkt sich ausgewählte Artikel.
Registrierte Besucher heißen in camindo CMS Frontend-User – im Unterschied zu den Benutzern im Backend. Ein Frontend-User hat kein Benutzerkonto im Backend: Sein digitales Abbild im CMS ist ein Profil-Datensatz, ein gewöhnlicher Datensatz wie seine Beiträge auch. Dadurch gelten für sie alle Werkzeuge der Redaktion – Suche, Stapelverarbeitung, Export, Rechte.
Profil-Bereiche
Ein Bereich vom Typ PROFILE enthält einen Datensatz je Frontend-User. Der Bauplan „Mitglieder“ legt einen solchen Bereich mit den Feldern Name, E-Mail und Passwort an. Weitere Profilfelder – Avatar, Adresse, Interessen – fügen Sie wie gewohnt hinzu.
Unter „Anmeldung an der Website“ legen Sie fest:
| Einstellung | Bedeutung |
|---|---|
| Name | das Feld mit dem Anmeldenamen, Typ „Kurzer Text“ (auch verschlüsselt), z. B. die E-Mail-Adresse |
| Passwort | das Feld vom Typ „Passwort“, gegen das die Anmeldung prüft |
| Zweiter Faktor | ob die Anmeldung zusätzlich einen Code braucht – siehe unten |
Beide Felder sind erst wählbar, nachdem sie angelegt wurden.
Weisen Sie dem Passwort-Feld die Extension „Passwort-Richtlinie“ zu (Abschnitt „Erweiterung“ der Felddefinition). Erst dann weist camindo CMS zu schwache Passwörter bei Registrierung und Passwortwechsel zurück. Die Regeln sind die aus Kapitel 12, einzelne Werte können Sie am Feld abweichend einstellen. Der Template-Programmierer zeigt dieselben Regeln im Formular an (CMS:USER_PASSWORD_RULES).
Ohne die Extension lässt sich die Passwortstärke nur über Mindestlänge (Minimum) und Muster (RegEx) in den Einstellungen des Eingabefeldes steuern.
Beitrags-Bereiche
Ein Bereich vom Typ UGC („user-generated content“) nimmt Beiträge angemeldeter Frontend-User auf. Der Bauplan „Kommentare“ legt einen solchen Bereich mit Name und Kommentartext an. Unter „Authentifizierung“ wählen Sie die Profil-Container, deren Frontend-User hier Beiträge anlegen dürfen. Jeder Beitrag ist mit dem Profil seines Verfassers verbunden. Ändern und Löschen kann ein Frontend-User nur seine eigenen Beiträge.
Die Templates
Registrierung, Anmeldung, Passwort-Reset und das Speichern von Beiträgen übernehmen
Templates mit den Befehlen CMS:USER_* – siehe
Handbuch für Template-Programmierer.
Der Ablauf einer Registrierung:
- Der Besucher füllt das Registrierungsformular aus. camindo CMS legt sein Profil mit dem Status „Unbestätigt“ an und erzeugt einen Einmal-Code; das Template verschickt ihn als Bestätigungslink per E-Mail (Befehl CMS:EMAIL).
- Mit dem Klick auf den Link wird das Profil freigeschaltet; der Frontend-User kann sich anmelden.
- Vergisst er sein Passwort, fordert er auf dieselbe Weise einen Link zum Zurücksetzen an.
Die Links sind zeitlich begrenzt gültig (Vorgabe: 24 Stunden für die Bestätigung, eine Stunde für das Zurücksetzen des Passworts) und nur einmal verwendbar.
Anmeldegeräte und Passwörter
- Neues Passwort nur mit dem bisherigen. Im Kundenkonto ändert ein Frontend-User sein Passwort nur, wenn er das bisherige eingibt. Wer an eine offene Sitzung gelangt, kann das Konto so nicht übernehmen. Ausnahme ist der Link aus „Passwort vergessen“: er gilt als Nachweis, das bisherige Passwort entfällt.
- „Passwort vergessen“ funktioniert auf jedem Gerät – üblich und sinnvoll, denn man vergisst sein Passwort oft gerade am neuen Rechner oder Telefon. Die Sicherheit liegt im Link: er geht nur an die hinterlegte E-Mail-Adresse, gilt eine Stunde und nur einmal.
- Nach einem neuen Passwort werden alle anderen Anmeldungen des Users beendet. Soll der User über die Passwort-Änderung informiert werden (falls er es nicht selbst war), muss sich das Template, das nach dem Speichern des Profils angezeigt wird, um die Benachrichtigung kümmern, beispielsweise mittels CMS:EMAIL.
- Anmeldung von einem neuen Gerät: Die Website kann dem Frontend-User einen Hinweis schicken, wenn sich sein Konto von einem unbekannten Browser aus anmeldet. Die E-Mail verschickt das Template; alternativ ein eigener Benachrichtigungsweg, etwa per SMS (Kapitel 12).
Zweiter Faktor
Ein Kundenkonto soll nicht allein am Passwort hängen. Mit der Einstellung „Zweiter Faktor“ im Profil-Bereich braucht die Anmeldung zusätzlich einen sechsstelligen Code:
| Einstellung | Wirkung |
|---|---|
| Aus | wie bisher, nur das Passwort |
| Freiwillig | Frontend-User können im Kundenkonto selbst eine Authenticator-App oder den Code per E-Mail einschalten |
| Code bei neuem Gerät | wie „Freiwillig“. Zusätzlich schickt die Website einen Code per E-Mail, wenn sich jemand von einem unbekannten Gerät (Browser) anmeldet. Auf den gewohnten Geräten bleibt es beim Passwort. Empfohlen für Shops |
| Immer | jede Anmeldung braucht einen Code: per E-Mail oder – wenn eingerichtet – aus der App |
Der Frontend-User richtet eine Authenticator-App (Google Authenticator, Microsoft Authenticator, 1Password …) im Kundenkonto ein, indem er einen QR-Code scannt, den angezeigten Schlüssel abtippt oder auf dem Telefon einen Link öffnet. Er bekommt zehn Wiederherstellungscodes für den Fall, dass er sein Telefon verliert. Hat er auch diese nicht mehr, setzen Sie den zweiten Faktor im Backend zurück: Profil-Datensatz öffnen, Menü rechts „Zweiter Faktor“ → „Zweiten Faktor zurücksetzen“ (Schreibrecht auf den Bereich nötig; der Vorgang steht im Audit-Log). Prüfen Sie vorher, ob die Anfrage wirklich vom Inhaber kommt.
Ist eine App eingerichtet, verlangt auch der Link aus „Passwort vergessen“ den Code – sonst genügte der Zugriff auf das E-Mail-Postfach, um das Konto zu übernehmen.
Den Code per E-Mail verschickt – wie alle E-Mails der Community-Funktionen – das Template. Soll er per SMS gehen, ruft der Template-Programmierer dort statt der E-Mail einen SMS-Dienst auf.
Die Templates dafür (CMS:USER_LOGIN_CODE, CMS:USER_2FA) müssen vorhanden sein, bevor Sie die Einstellung einschalten – sonst scheitert jede Anmeldung, die einen Code bräuchte.
Schutz der Formulare
„Passwort vergessen“ und die Registrierung schicken E-Mails an Adressen, die jemand eingetippt hat. Damit niemand über Ihre Website fremde Postfächer flutet, begrenzt camindo CMS die Anfragen (Drosselung) – je eingegebener Adresse, je Besucher (IP-Adresse) und je Website. Dazu kommt ein Formularschutz gegen Robots mit einer Sperre je IP-Adresse gegen das massenhafte Durchprobieren von Passwörtern. Die Grenzen stehen in der Konfiguration (unten). Die Vorgaben passen für die meisten Websites.
Nie bestätigte Registrierungen werden nach sieben Tagen gelöscht – wer die Adresse eines anderen einträgt, blockiert sie so nur kurz.
Läuft die Website hinter einem Proxy oder Load-Balancer, tragen Sie ihn unter
security.trusted_proxiesein (Kapitel 12) – sonst sieht camindo CMS alle Besucher mit der Adresse des Proxys und sperrt bei der Drosselung alle zugleich.
Prüfen und Owner
Alles, was ein Frontend-User anlegt oder ändert, wird mit „Prüfung nötig“ markiert und erscheint im Widget „Ungeprüfte Inhalte von Frontend-Usern“ der Redaktion (siehe Handbuch für Anwender). Legen Sie das Metafeld „Prüfung nötig“ in den Profil- und Beitrags-Bereichen an, damit die Redaktion die Markierung nach der Prüfung entfernen kann.
Jeder Datensatz braucht einen Owner im Backend (siehe
Kapitel 7). Für Datensätze von Frontend-Usern
nennt ihn das Template (Parameter owner) oder die Konfiguration
(user.default_owner_id). Fehlt beides, kann der Befehl nicht speichern. Über die Benutzergruppe
dieses Owners steuern Sie, welche Redaktion für die Inhalte der Frontend-User zuständig ist.
Geschützte Dateien
Upload- und Thumbnail-Felder haben einen Abschnitt „Authentifizierung“. Mit „Nur für angemeldete Frontend-User“ und der Auswahl der berechtigten Profil-Container wird das Verzeichnis des Feldes auf dem Server gesperrt. Die Dateien werden dann nur an angemeldete Frontend-User aus diesen Profil-Bereichen ausgeliefert – etwa Mitgliederbilder, Unterlagen für Kursteilnehmer oder Downloads für Kunden. Alle anderen erhalten eine „nicht gefunden“-Antwort.
Datenexport und Löschen
Verlangt ein Website-User Auskunft über seine gespeicherten Daten (Art. 15 DSGVO)
oder eine Kopie zur Mitnahme (Art. 20 DSGVO), erstellen Sie einen
Datenexport personenbezogener Daten: am Profil-Datensatz im Menü rechts
oder im Modul „Datenschutz“ (siehe
Kapitel 15). Der Export ist
ein Teilauszug, den Sie vor der Weitergabe ergänzen.
Website-User können ihre Daten nicht selbst herunterladen.
Löschen (Art. 17 DSGVO): Was beim Löschen eines Profils und seiner Beiträge
geschieht, legt die Lösch-Policy des Bereichs fest – in den Papierkorb legen,
endgültig löschen, einzelne Felder überschreiben, auch zeitversetzt
(siehe Kapitel 15). Die Beiträge des
Users werden dabei immer nach der Policy ihres eigenen Bereichs gelöscht (Auslöser
„UGC: Profil wurde gelöscht“). Der
Löschdialog zeigt, was die Policy mit dem Datensatz macht. Muss der Papierkorb eines
Users sofort geleert werden: „Werkzeuge“ → „Papierkorb eines Users“
(Kapitel 15).
Müssen alle Daten inkl. Änderungshistorie (Audit-Log) entfernt werden:
camindo.php audit delete.
Was camindo CMS insgesamt über Website-User speichert, steht in Kapitel 15.
Konfiguration
Die Community-Einstellungen stehen in .camindo.php unter user (siehe
Kapitel 12):
| Schlüssel | Vorgabe | Bedeutung |
|---|---|---|
user.max_inactive_sec |
86400 |
automatische Abmeldung eines Users nach Untätigkeit (Sekunden) |
user.basket_days |
30 |
Aufbewahrung des Warenkorbs nicht angemeldeter Besucher (Tage) |
user.token_expiration |
86400 |
Gültigkeit des Bestätigungslinks nach der Registrierung (Sekunden) |
user.password_token_expiration |
3600 |
Gültigkeit des Links „Passwort vergessen“ und der Frist danach, in der das neue Passwort ohne das bisherige gesetzt werden kann (Sekunden) |
user.bruteforce_max / bruteforce_delay |
5 / 600 |
erlaubte Fehlversuche bei der Anmeldung und Sperrdauer (Sekunden) |
user.cookie_secure |
true |
Sitzungs-Cookie nur über HTTPS. false nur für einen lokalen Test ohne SSL |
user.default_owner_id |
0 |
Benutzer, dem Datensätze von Frontend-Usern gehören, wenn das Template keinen Owner nennt |
user.throttle |
siehe unten | Drosselung: je Regel [höchstens, Sekunden], höchstens 0 schaltet sie ab |
user.formguard_min_seconds / formguard_max_seconds |
3 / 3600 |
Formularschutz: frühestens bzw. spätestens so viele Sekunden nach dem Aufruf darf ein geschütztes Formular abgeschickt werden. Ein Template kann die Mindestzeit je Formular abweichend setzen |
user.unconfirmed_days |
7 |
nie bestätigte Registrierungen nach so vielen Tagen löschen (0 = nie) |
user.login_code_expiration |
600 |
Gültigkeit des Anmeldecodes (Sekunden) |
Vorgaben der Drosselung (user.throttle):
| Regel | Vorgabe | zählt |
|---|---|---|
pw_value |
3 je Stunde | „Passwort vergessen“ je eingegebener Adresse |
pw_ip |
10 je Stunde | „Passwort vergessen“ je Besucher (IP) |
register_ip |
5 je Stunde | Registrierungen je Besucher |
register_value |
3 je Tag | Registrierungen je E-Mail-Adresse |
mail_instance |
200 je Stunde | beides zusammen je Website |
login_ip |
30 je 10 Minuten | falsche Passwörter je Besucher, über alle Konten |
login_code |
3 je 10 Minuten | „Neuen Code senden“ je Konto |
email_ip |
5 je Stunde | Kontaktformulare mit Drosselung (CMS:EMAIL throttle=true) |
csp_report |
60 je 10 Minuten | Meldungen der Script-Policy je Besucher |
zip_ip |
30 je Stunde | neu erstellte ZIP-Downloads (CMS:ZIP) je Besucher |
Eine Regel ändern Sie einzeln, z. B. 'throttle' => ['pw_ip' => [20, 3600]].
Stand: camindo CMS 9.1.3