Adds a WordPress plugin that places a customisable "Sign in with Microsoft" button on wp-login.php and signs existing users in via the OpenID Connect authorization code flow with PKCE. Users are matched by e-mail address only; no accounts are created. Security: single-use state/nonce bound to an HttpOnly cookie, ID token signature verification against Microsoft's JWKS (RS256 only) with issuer/audience/tenant/expiry/nonce checks, optional tenant pinning, account binding to the Microsoft object ID, e-mail domain allow-list, client secret encrypted at rest (AES-256-GCM). Admin: settings screen with connection, button and security tabs, live button preview, colour presets, media-library icon picker, redirect URI copy button and tenant connectivity test. Packaging for WordPress.org: readme.txt with External services section, GPL-2.0 license, uninstall.php, POT + German translations, .distignore, build script, PHPCS config and CI running Plugin Check. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JJxAHYdMfKPoN4koRc4Ci2
43 lines
3.7 KiB
Markdown
43 lines
3.7 KiB
Markdown
# 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-Endpunkte, übertragene Daten, Links zu Nutzungsbedingungen/Datenschutz) |
|
||
| Keine externen Assets/CDNs | CSS/JS liegen im Plugin; einzige Netzwerkverbindungen gehen zu `login.microsoftonline.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.
|