benutzerverwaltung


Benutzerverwaltung


Die Benutzerverwaltung ist ein Core-Modul des Weinhold Frameworks und das zentrale Authentifizierungssystem – Registrierung, Login, Profilbearbeitung, Passwort-Reset und Rollenzuweisung laufen netzwerkweit über eigene Shortcode-Seiten statt über die WordPress-Standardseiten.

Allgemein

Eigene Login-Seiten statt wp-login.php


Login, Registrierung, Profil und Passwort-vergessen laufen über eigene, per Shortcode gebaute Seiten (meist auf der Hauptsite, netzwerkweit gültig). Aufrufe von wp-login.php werden automatisch auf die passende eigene Seite umgeleitet – nur der eigentliche Formular-POST für den Login selbst sowie technische Flows (Logout, Postpass, Bestätigungslinks) bleiben unangetastet.

In der Praxis – weinify.de


Auf weinify.de und allen Subsites läuft das komplette Login- und Registrierungssystem über dieses Modul. Der weinhold_auth_nav-Shortcode ist im Custom Header eingebunden und sorgt für die siteübergreifende Navigation zwischen Login, Profil und weiteren Seiten.

Rollen & Berechtigungen


Administratoren weisen Rollen und Modulberechtigungen zentral im Dashboard unter Weinhold → Nutzerverwaltung → Modulberechtigungen zu. So kann pro Modul konfiguriert werden, welche Rollen Lese- oder Schreibzugriff haben. Die Rolle eines Nutzers wird dabei immer pro Site einzeln ermittelt (Multisite-Capabilities), nicht netzwerkweit einheitlich.

Profilbild (Avatar)


Nutzer können über das Profil ein eigenes Profilbild hochladen, das Gravatar/Identicon ersetzt – wahlweise netzwerkweit gültig (global) oder nur für die aktuelle Site (lokal, überschreibt global). Fallback-Reihenfolge: Site-spezifisch → Global → WordPress-Standard.

Shortcodes

ShortcodeBeschreibung
weinhold_auth_loginLogin-Formular
weinhold_auth_registerRegistrierungsformular für neue Benutzer
weinhold_auth_profileProfilansicht und -bearbeitung für angemeldete Benutzer (Passwort ändern, Avatar hochladen)
weinhold_auth_lostpasswordFormular zum Zurücksetzen des Passworts
weinhold_auth_navNavigationsleiste mit Links zu Login, Profil und weiteren Bereichen
weinhold_show_on_loginUmschlossener Inhalt wird nur angemeldeten Besuchern angezeigt
weinhold_show_on_logoutUmschlossener Inhalt wird nur abgemeldeten Besuchern (Gästen) angezeigt

Dateien

modules/user_management_core.php – einzige Datei des Moduls (Core-Modul, das _core.php-Suffix lädt es immer, mit Abstand die größte Moduldatei des Frameworks): Auth-Seiten-Verwaltung, Shortcode-Formulare, Rollen-/Rechte-Auflösung, Redirect-Schutz, Netzwerk- und Site-Admin-Seiten, Avatar-System.

Für Entwickler

Auth-Seiten (zentral konfiguriert)


Die Ziel-Seiten für Login/Registrierung/Profil/Passwort-vergessen werden als Post-IDs in der Netzwerk-Option weinhold_network_auth_settings gespeichert (auth_blog_id plus je eine Page-ID pro Zweck). weinhold_user_management_get_auth_page_url($key) löst daraus die tatsächliche Permalink-URL auf (wechselt bei Multisite kurz auf den konfigurierten auth_blog_id via switch_to_blog()).

Rollen & Capabilities


FunktionBeschreibung
weinhold_user_management_get_roles_for_site($site_id)Editierbare Rollen einer Site (get_editable_roles(), pro Site via switch_to_blog())
weinhold_user_management_get_user_role_for_site($user_id,$site_id)Liest die Rolle eines Nutzers direkt aus dessen Capabilities-Meta der jeweiligen Site
weinhold_user_management_get_default_role($roles)Vorbelegte Rolle bei der Registrierung (subscriber, falls vorhanden, sonst die erste verfügbare)
weinhold_user_management_sort_roles_for_display($roles)Sortiert Rollen fuer die Anzeige: WordPress-Systemrollen zuerst in fester Reihenfolge, Rest alphabetisch

Redirect-Validierung


weinhold_user_management_validate_login_redirect_target($redirect_raw) normalisiert und prüft jedes redirect_to-Ziel gegen Open-Redirect-Angriffe: HTML-Entities und mehrfach URL-kodierte Werte werden dekodiert, schema-lose Domains erkannt, und am Ende nur relative Pfade, per wp_validate_redirect() erlaubte Hosts oder (bei Multisite) Domains anderer Netzwerk-Sites akzeptiert – sonst greift ein Fallback auf die Startseite.

Profilbild-Auflösung


Eingehängt über den WordPress-Filter pre_get_avatar_data, wirkt dadurch automatisch überall wo get_avatar_url()/get_avatar() aufgerufen wird. Zwei Speicherebenen: global per update_user_meta($uid,’weinhold_avatar_global‘,$url) (netzwerkweit) und lokal per update_user_option($uid,’weinhold_avatar_local‘,$url,false) (nur aktuelle Site, hat Vorrang). weinhold_um_get_avatar_url($user_id) liefert die aufgelöste URL oder einen leeren String, wenn kein eigenes Bild hinterlegt ist. Upload-Verzeichnis: uploads/weinhold-avatars/ (bei Multisite-Subsites entsprechend unter uploads/sites/{id}/).

Besonderheiten

wp-login.php bleibt technisch erreichbar (WordPress braucht es intern), wird aber bei GET-Aufrufen automatisch auf die konfigurierte eigene Seite umgeleitet – der Login-POST selbst läuft weiterhin über wp-login.php, damit WordPress-Auth-Cookies korrekt gesetzt werden.

Fehlgeschlagene Logins über wp-login.php werden ebenfalls abgefangen (wp_login_failed-Hook), damit Fehlermeldungen auf der eigenen Login-Seite statt auf der WordPress-Standardseite erscheinen.

Angemeldete Nutzer, die eine Auth-Seite (Login/Registrierung) direkt aufrufen, werden per template_redirect automatisch weggeleitet (z. B. zum Profil) – verhindert ein erneutes Login-Formular für bereits eingeloggte Besucher.

Admin-Bar im Frontend ist standardmäßig ausgeblendet (auch für Administratoren, konfigurierbar unter Weinhold → Nutzerverwaltung → UI-Einstellungen) – Ausnahme lässt sich pro Einstellung gezielt wieder aktivieren.

allowed_redirect_hosts wird um alle Domains des Multisite-Netzwerks erweitert, damit wp_safe_redirect() auch netzwerkinterne Ziel-Sites als sicher akzeptiert.

Versionshistorie

VersionDatumÄnderung
1.0.022.09.2026Einführung der Versionierung.