Support custom login pages
- Add the button (and error messages) to every wp_login_form() form via login_form_top/login_form_bottom; in button-only mode the password fields are wrapped and hidden there. - New template functions m365_login_button() and m365_login_messages(); the shortcode gains divider and messages attributes. - New setting for the custom login page URL: failed sign-ins, the fallback link and the logout redirect point there instead of wp-login.php. Must be a same-site URL. - Button-only mode now blocks every interactive password sign-in through the authenticate filter, not only wp-login.php; XML-RPC, REST, WP-CLI and cron are exempt, plus a filter for trusted exceptions. - Fallback key accepted on any page (init) instead of login_init only. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JJxAHYdMfKPoN4koRc4Ci2
This commit is contained in:
parent
e5db0d49be
commit
701e85ab88
15 changed files with 804 additions and 300 deletions
24
README.md
24
README.md
|
|
@ -31,6 +31,7 @@
|
|||
- [Sicherheit](#sicherheit)
|
||||
- [Gruppen-Beschränkung](#gruppen-beschränkung)
|
||||
- [Nur-Button-Modus & Fallback](#nur-button-modus--fallback)
|
||||
- [Eigene Login-Seite](#eigene-login-seite)
|
||||
- [Sicherheitskonzept](#sicherheitskonzept)
|
||||
- [Shortcode & Hooks](#shortcode--hooks)
|
||||
- [Fehlerbehebung](#fehlerbehebung)
|
||||
|
|
@ -230,8 +231,8 @@ Leere Liste = keine Beschränkung.
|
|||
Im Tab *Sicherheit* → **Button-only mode**:
|
||||
|
||||
- Blendet Benutzername/Passwort-Felder und den „Passwort vergessen?“-Link aus.
|
||||
- **Sperrt Passwort-Logins** über `wp-login.php` serverseitig – nicht nur per CSS.
|
||||
- Application Passwords, REST API und XML-RPC sind nicht betroffen.
|
||||
- **Sperrt Passwort-Logins serverseitig**, nicht nur per CSS – auf `wp-login.php` und in jedem eigenen Login-Formular (`authenticate`-Filter).
|
||||
- Application Passwords, REST API, XML-RPC, WP-CLI und Cron sind nicht betroffen. Einzelne Ausnahmen per Filter `m365_login_block_password_login`.
|
||||
- Wird erst aktiv, wenn die Verbindung vollständig konfiguriert ist.
|
||||
|
||||
**Fallback (Notausgang):** Beim Speichern erzeugt das Plugin einen geheimen Schlüssel und zeigt den Fallback-Link an:
|
||||
|
|
@ -254,6 +255,20 @@ schaltet den Modus komplett ab. Alternativ das Plugin-Verzeichnis per FTP umbene
|
|||
|
||||
> ⚠️ Vor dem Aktivieren sicherstellen, dass dein eigenes Admin-Konto per Microsoft funktioniert, und den Fallback-Link sicher ablegen.
|
||||
|
||||
### Eigene Login-Seite
|
||||
|
||||
Das Plugin funktioniert auch, wenn die Anmeldung nicht über `wp-login.php` läuft.
|
||||
|
||||
| Baustein | Was passiert |
|
||||
| --- | --- |
|
||||
| **`wp_login_form()`** (Themes, viele Login-Plugins) | Der Button wird automatisch unter dem Formular eingefügt, inklusive Fehlermeldungen darüber. Im Nur-Button-Modus werden die Passwortfelder ausgeblendet. Abschaltbar im Tab *Button*. |
|
||||
| **Shortcode** | `[m365_login_button redirect="/dashboard/" divider="yes" messages="yes"]` für Block-Editor und Page Builder (Elementor, Divi, …). |
|
||||
| **Template-Funktion** | `m365_login_button( array( 'redirect' => '/dashboard/' ) );` in Theme-Dateien, `m365_login_messages();` für die Meldungen an anderer Stelle. |
|
||||
| **URL der Login-Seite** (Tab *Button* → *Eigene Login-Seite*) | Fehlermeldungen nach einem gescheiterten Microsoft-Login, der Fallback-Link und die Weiterleitung nach dem Abmelden zeigen auf diese Seite statt auf `wp-login.php`. |
|
||||
| **Nur-Button-Modus** | Greift serverseitig für alle Passwort-Logins, also auch für Formulare von Page Buildern, die das Plugin nicht ausblenden kann. |
|
||||
|
||||
Plugins, die `wp-login.php` umbenennen (z. B. WPS Hide Login), sind kompatibel, weil das Plugin durchgehend `wp_login_url()` verwendet.
|
||||
|
||||
---
|
||||
|
||||
## Sicherheitskonzept
|
||||
|
|
@ -315,6 +330,11 @@ add_action( 'm365_login_success', function ( WP_User $user, array $claims ) {
|
|||
}
|
||||
}, 10, 2 );
|
||||
|
||||
// Ein vertrauenswürdiges Plugin darf trotz Nur-Button-Modus per Passwort anmelden
|
||||
add_filter( 'm365_login_block_password_login', function ( $block, WP_User $user ) {
|
||||
return doing_action( 'my_membership_plugin_login' ) ? false : $block;
|
||||
}, 10, 2 );
|
||||
|
||||
// Redirect-URI anpassen (z. B. hinter einem Reverse Proxy)
|
||||
add_filter( 'm365_login_redirect_uri', fn( $uri ) => 'https://www.example.com/m365-login/callback' );
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue