Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 197f800c3a | |||
| 54d687c843 |
@@ -1,18 +1,18 @@
|
||||
{
|
||||
"name": "Simple Math CAPTCHA",
|
||||
"slug": "simple-math-captcha",
|
||||
"version": "1.3.4",
|
||||
"version": "1.4.0",
|
||||
"author": "Ingo Höttges",
|
||||
"author_homepage": "https://git.rosinenkot.de/ingo",
|
||||
"homepage": "https://git.rosinenkot.de/ingo/simple-math-captcha",
|
||||
"requires": "5.8",
|
||||
"tested": "6.9",
|
||||
"requires_php": "8.0",
|
||||
"download_url": "https://git.rosinenkot.de/ingo/simple-math-captcha/archive/v1.3.4.zip",
|
||||
"download_url": "https://git.rosinenkot.de/ingo/simple-math-captcha/archive/v1.4.0.zip",
|
||||
"last_updated": "2026-04-23 08:00:00",
|
||||
"sections": {
|
||||
"description": "Minimalistische Mathe-CAPTCHA auf WordPress-Login, Passwort-Reset und Registrierung. Keine externen Requests, kein JavaScript, kein Tracking. Einstellungen unter <em>Einstellungen → Math CAPTCHA</em>: Maximaler Wert an der Lücke, maximale Summe, Position der Lücke (erster/zweiter Summand, Summe, Zufall).",
|
||||
"changelog": "<h4>1.3.4</h4><ul><li>Eingabefeld inline in der Gleichung, schmal und rechteckig</li></ul><h4>1.2.0</h4><ul><li>Neue Option: maximale Summe; Default der Lücken-Position auf Zufall</li></ul><h4>1.1.0</h4><ul><li>Admin-Einstellungen: Maximaler Wert, Position der Lücke</li></ul>"
|
||||
"changelog": "<h4>1.4.0</h4><ul><li>Plugin ist in der Plugins-Liste nur noch für Administratoren (`manage_options`) sichtbar — Moderatoren/Autoren mit `activate_plugins` sehen den Eintrag nicht mehr</li></ul><h4>1.3.5</h4><ul><li>Bugfix: native WP-Fehlermeldung für falsche Anmeldedaten wird nicht mehr von Captcha-Fehler überdeckt</li></ul><h4>1.3.4</h4><ul><li>Eingabefeld inline in der Gleichung, schmal und rechteckig</li></ul><h4>1.2.0</h4><ul><li>Neue Option: maximale Summe; Default der Lücken-Position auf Zufall</li></ul><h4>1.1.0</h4><ul><li>Admin-Einstellungen: Maximaler Wert, Position der Lücke</li></ul>"
|
||||
},
|
||||
"icons": {
|
||||
"default": "https://git.rosinenkot.de/ingo/simple-math-captcha/raw/branch/main/icon-128.png"
|
||||
|
||||
+24
-2
@@ -5,7 +5,7 @@
|
||||
* Keine externen Requests, kein JavaScript, kein Tracking, keine Tabellen.
|
||||
* Loesung wird serverseitig als einmal-verwendbarer Transient gespeichert (10 min TTL).
|
||||
* Einstellungen unter "Einstellungen > Math CAPTCHA".
|
||||
* Version: 1.3.4
|
||||
* Version: 1.4.0
|
||||
* Author: Ingo Höttges
|
||||
* License: GPL-2.0-or-later
|
||||
*/
|
||||
@@ -37,9 +37,24 @@ class Simple_Math_Captcha {
|
||||
add_filter('authenticate', [$this, 'verify_login'], 30, 3);
|
||||
add_action('lostpassword_post', [$this, 'verify_lostpassword']);
|
||||
|
||||
// Admin-Einstellungen
|
||||
// Admin-Einstellungen (nur fuer Admins sichtbar)
|
||||
add_action('admin_init', [$this, 'register_settings']);
|
||||
add_action('admin_menu', [$this, 'register_menu']);
|
||||
|
||||
// Plugin-Eintrag in der Plugins-Liste fuer Nicht-Admins ausblenden.
|
||||
add_filter('all_plugins', [$this, 'hide_plugin_from_list']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Entfernt das Plugin aus der "Plugins → Installierte Plugins"-Liste,
|
||||
* falls der aktuelle Nutzer nicht manage_options hat. Dadurch sehen
|
||||
* Moderatoren/Autoren den Eintrag nicht, selbst wenn ihre Custom-Rolle
|
||||
* activate_plugins hat.
|
||||
*/
|
||||
public function hide_plugin_from_list(array $plugins): array {
|
||||
if (current_user_can('manage_options')) { return $plugins; }
|
||||
unset($plugins[plugin_basename(__FILE__)]);
|
||||
return $plugins;
|
||||
}
|
||||
|
||||
// ---- Rendering ----------------------------------------------------------
|
||||
@@ -149,6 +164,13 @@ class Simple_Math_Captcha {
|
||||
if (empty($_POST) || empty($_POST['log']) || empty($_POST['pwd'])) {
|
||||
return $user;
|
||||
}
|
||||
// Wenn WordPress bereits einen Fehler hat (z. B. falsches Passwort),
|
||||
// durchreichen — sonst wuerde unsere Captcha-Fehlermeldung den
|
||||
// originalen Fehler ueberdecken und die native rote WP-Meldung
|
||||
// fuer falsche Anmeldedaten ginge verloren.
|
||||
if (is_wp_error($user)) {
|
||||
return $user;
|
||||
}
|
||||
if (!$this->check()) {
|
||||
return new WP_Error(
|
||||
'captcha_failed',
|
||||
|
||||
Reference in New Issue
Block a user