wp-m365-login/docs/wordpress-org-einreichung.md
friloo 1202283eda
Add Entra group restriction, button-only mode and detailed README
Groups: a Graph-backed picker on the Security tab (search by name or
paste object IDs) stores allowed group IDs. During sign-in membership is
read from the ID token's groups claim when present, otherwise verified
through Microsoft Graph checkMemberGroups (transitive). Verification
failures refuse the sign-in.

Button-only mode: hides the password form and the lost-password link
and rejects password sign-ins on wp-login.php via the authenticate
filter. A generated, rate-limited fallback key re-enables the form for
30 minutes per browser; M365_LOGIN_DISABLE_BUTTON_ONLY switches the
mode off from wp-config.php.

Also: new German-language README with sequence diagram, settings
reference, troubleshooting and hook examples; readme.txt external
services section now covers Microsoft Graph; translations updated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJxAHYdMfKPoN4koRc4Ci2
2026-09-22 14:30:53 +00:00

43 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Checkliste: Einreichung im WordPress-Plugin-Verzeichnis
Das Plugin ist so aufgebaut, dass es die [Richtlinien des Plugin-Verzeichnisses](https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/)
erfüllt. Vor der Einreichung unter <https://wordpress.org/plugins/developers/add/> bitte die folgenden Punkte durchgehen.
## 1. Vor dem Upload prüfen
- [ ] `Tested up to:` in `readme.txt` auf die **aktuelle WordPress-Version** setzen (das Review-Team lehnt veraltete Werte ab).
- [ ] `Stable tag:` in `readme.txt` und `Version:` in `m365-login.php` sowie `M365_LOGIN_VERSION` sind identisch.
- [ ] `Contributors:` in `readme.txt` enthält deinen **WordPress.org-Benutzernamen** (aktuell `friloo`).
- [ ] Übersetzungsdateien aktualisiert: `wp i18n make-pot . languages/m365-login.pot` (WP-CLI) oder `python3 bin/make-pot.py`, danach `python3 bin/compile-mo.py`.
- [ ] `bash bin/build-zip.sh` ausführen und `build/m365-login.zip` hochladen (Ordner im ZIP heißt `m365-login`, nicht `wp-m365-login`).
- [ ] Lokal den **Plugin Check** laufen lassen (Plugin „Plugin Check (PCP)“ installieren oder auf das CI-Ergebnis achten) er muss ohne Fehler durchlaufen.
## 2. Namens- und Marken-Regeln
- Slugs dürfen nicht mit `wp-` oder mit Markennamen wie `microsoft-` beginnen; deshalb heißt der Slug `m365-login` und der Plugin-Name „M365 Login“.
Sollte das Review-Team dennoch einen anderen Slug zuweisen (z. B. wegen Trademark-Bedenken bei „M365“), müssen **Text Domain**, Ordnername und `readme.txt` angepasst werden Suche nach `m365-login` im Repo.
- Der Name darf nicht suggerieren, dass das Plugin von Microsoft stammt. Beschreibungstexte verwenden deshalb Formulierungen wie „sign in with Microsoft“, nicht „official Microsoft plugin“.
- Das Microsoft-Logo ist eingebettet, damit der Button so aussieht, wie Nutzer es erwarten. Microsoft erlaubt die Verwendung des Logos für „Sign in with Microsoft“-Buttons gemäß den [Branding-Richtlinien](https://learn.microsoft.com/entra/identity-platform/howto-add-branding-in-apps). Ein Reviewer könnte trotzdem nachfragen der Hinweis auf diese Richtlinie reicht in der Regel.
## 3. Was bereits erfüllt ist
| Anforderung | Umsetzung |
| --- | --- |
| GPL-kompatible Lizenz | `LICENSE` (GPL-2.0), Header in `m365-login.php`, `readme.txt` |
| `readme.txt` im WP-Format | inkl. Pflichtabschnitt **External services** (Microsoft-Login- und Graph-Endpunkte, übertragene Daten, Links zu Nutzungsbedingungen/Datenschutz) |
| Keine externen Assets/CDNs | CSS/JS liegen im Plugin; einzige Netzwerkverbindungen gehen zu `login.microsoftonline.com` und (optional, Gruppenprüfung) `graph.microsoft.com` |
| Sanitizing / Escaping / Nonces | Settings API mit `sanitize_callback`, `esc_*` bei jeder Ausgabe, `check_ajax_referer` + `current_user_can` |
| Eindeutiges Präfix | `m365_login_` / `M365_Login_` für alle globalen Bezeichner |
| Kein Tracking, keine Telefon-nach-Hause-Funktion | |
| Saubere Deinstallation | `uninstall.php` entfernt Option, Transients und User-Meta (auch Multisite) |
| Keine minifizierten Dateien ohne Quelle | Alle Assets liegen unminifiziert vor |
| `Requires PHP` / `Requires at least` | 7.4 / 6.0 |
| Übersetzbar | Text Domain `m365-login`, `languages/m365-login.pot`, deutsche Übersetzung |
## 4. Nach der Freigabe
1. SVN-Zugang aus der Freigabe-Mail nutzen: `svn co https://plugins.svn.wordpress.org/m365-login`.
2. Inhalt von `build/m365-login/` nach `trunk/` kopieren, `assets/` aus `.wordpress-org/` befüllen (Icon, Banner, Screenshots).
3. `svn cp trunk tags/1.0.0` und committen.
4. Screenshots erstellen (siehe `== Screenshots ==` in `readme.txt`) und als `screenshot-1.png` … in `assets/` ablegen.
5. Optional: GitHub Action `10up/action-wordpress-plugin-deploy` einrichten, um Releases automatisch nach SVN zu spiegeln.