Grav-InselAls persönliches Log und „Müllhalde“ für meine GeoCaching-Aktivitäten nutze ich auch ein Blog, das ich dann mit dem Authenticator-Plugin von Frank Bültge vor „fremden Augen“ „geschützt“ habe.

Heute Früh hatte ich plötzlich eine eMail bekommen, dass sich in meinem GeoCaching-Blog ein neuer Benutzer angemeldet hätte. Tatsächlich hatte ich das Registrieren bisher erlaubt, :shock: eigentlich ja in der „Erwartung“, dass neue User erst noch vom Admin freischalten werden müssen, – war es denn früher nicht mal so!? Offensichtlich ist das heute also möglich, den er konnte sich sofort anmelden. :evil:
Also musste ich erst mal gucken, was ein so hinzugekommener User alles darf und das war gar nicht gut – der konnte tatsächlich alles lesen. Das will ich natürlich auf keinen Fall!
Also habe ich erst mal das Registrieren verboten und diesen „Uli“ habe ich auch deaktiviert (— Keine Benutzerrolle in diesem Blog —).
Allerdings zeigte sich dann eine Weile später leider, dass das Plugin auch diesen „Benutzern“ den Zugang zum Blog gewährt – wieder etwas, dass ich ja wohl eher nicht will!
Und tatsächlich stellte sich heraus, dass Abfragen dieser Art if ( is_user_logged_in() ) nur Benutzer/Kennwort testen, egal welche Rolle der Benutzer hat. Erst eine Änderung in if ( current_user_can( „edit_posts“ )) bringt eine Besserung! Das BenutzerRecht „edit_posts“ gibt es erst ab dem Mitarbeiter-Rang.

Das Authenticator-Plugin habe ich jetzt also so abgeändert, dass Benutzer mindestens das Recht „edit_posts“ haben müssen, – also „Contributor“ (Mitarbeiter) sein müssen, um im geschützten Blog etwas lesen zu können. Dadurch „verschenke“ ich zwar einen „User-Rang“ (Abonnent), aber damit kann ich in meinem (fast Ein-Mann-) Blog ganz gut leben.

...
if (!class_exists('Authenticator')) {
  class Authenticator {
    function fb_authenticator_redirect() {
      // Checks if a user is logged in, if not redirects them to the login page
      if ( !current_user_can( 'edit_posts' ) ) {
        if ( is_user_logged_in() ) {
          nocache_headers();
          header("HTTP/1.1 302 Moved Temporarily");
          header('Location: ' . get_option('siteurl') . '/wp-admin/profile.php');
          header("Status: 302 Moved Temporarily");
          exit();
        }
        nocache_headers();
        header("HTTP/1.1 302 Moved Temporarily");
        header('Location: ' . get_option('siteurl') . '/wp-login.php?redirect_to=' . urlencode($_SERVER['REQUEST_URI']));
        header("Status: 302 Moved Temporarily");
        exit();
      }
    }
...

Danach konnte ich sogar das Registrieren wieder erlauben. Neue User werden weiterhin als ‚Abonnent‘ erzeugt und müssten dann erst ‚hochgestuft‘ werden, um mehr als ihr Dashboard sehen zu können.