wp-m365-login/docs/wordpress-org-einreichung.md
friloo 3e3e87b399
Add M365 Login plugin: Microsoft Entra ID sign-in for existing users
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
2026-09-22 14:21:10 +00:00

3.7 KiB
Raw Blame History

Checkliste: Einreichung im WordPress-Plugin-Verzeichnis

Das Plugin ist so aufgebaut, dass es die Richtlinien des Plugin-Verzeichnisses 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. 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.