Benutzerverwaltung mit WebsiteBaker

Website Bakeron März 31st, 20111 Kommentar

Für eine Vereinsseite musste ein Login geschaffen werden der den Usern ermöglicht, nach der Eingabe des Benutzernamens sowie Passwort, sofort zu der im Backend liegenden Bearbeitungsseite zu kommen. Kein leichtes Spiel, zumal WB nicht standardmässig dafür programmiert ist. Die Lösung war eine Zwischenseite die prüft ob der User besteht und wo seine Seite im Backen zu finden ist.

WebsiteBaker Benutzerverwaltung

Ein heikles Thema bei WebsiteBaker Installationen!
Es wurde ein Combosa Shop Template verwendet:
Im Beispiel wurde das Template mit einer bouncing box verwendet.
Muster: WB-Extrem, Woodline und Woodlow.

Als erstes braucht man eine Loginbox wie bei den Templates -WB-Extrem, Woodline und Woodlow, die so gestrickt ist:


<?php
           
            if (FRONTEND_LOGIN) {
              echo "\n          <!-- Login / Logout ".$comment_text_start." -->\n";
            
              if(!$wb->is_authenticated()) { 
              echo "          <div id=\"top_login\">\n";
              echo "            <span class=\"bouncing_user\">".$TEXT['LOGIN']."</span>\n";
                echo "            <!-- ".$TEXT['LOGIN']." ".$comment_text_start." -->\n";
                echo "            <form name=\"login\" action=\"".LOGIN_URL."?redirect=".WB_URL.PAGES_DIRECTORY."/weiterleitung.php\" method=\"post\">";
                echo "              ".$TEXT['USERNAME'].":\n";
                echo "              <input type=\"text\" name=\"username\" id=\"bouncing_login_name\"/><br />\n";
                echo "              ".$TEXT['PASSWORD'].":\n";
                echo "              <input type=\"password\" name=\"password\" id=\"bouncing_login_pass\"/><br />\n";
                echo "              <input type=\"submit\" name=\"submit\" value=\"".$TEXT['LOGIN']."\" ";
                echo "id=\"bouncing_login_submit\"/><br />\n";
                echo "              <a href=\"".FORGOT_URL."\">".$TEXT['FORGOT_DETAILS']."</a>\n";
                if(is_numeric(FRONTEND_SIGNUP)) { 
                  echo "              <a href=\"".SIGNUP_URL."\">".$TEXT['SIGNUP']."</a>\n";
                }
                echo "            </form>\n";
                echo "            <!-- ".$TEXT['LOGIN']." ".$comment_text_end." -->\n";
              } elseif($wb->is_authenticated()) {
              echo "          <div id=\"top_login\">\n";
              echo "            <span class=\"bouncing_user\">".$TEXT['LOGGED_IN']."</span>\n";
                echo "            <!-- ".$TEXT['LOGGED_IN']." ".$comment_text_start." -->\n";
                echo "            <form name=\"logout\" action=\"".LOGOUT_URL."\" method=\"post\">\n";
                echo "              ".$TEXT['WELCOME_BACK'].",<br /> <a href=\"".PREFERENCES_URL."\">\n";
                echo "              ".$wb->get_display_name()."</a><br />\n";
                echo "              <input type=\"submit\" name=\"submit\" value=\"".$MENU['LOGOUT']."\" ";
			    echo "id=\"bouncing_login_submit\"/>\n";
                echo "            </form>\n";
                echo "            <!-- ".$TEXT['LOGGED_IN']." ".$comment_text_end." -->\n";
              } 
              echo "          </div>\n";
              echo "          <!-- Login / Logout ".$comment_text_end." -->";
            } ?>


Diese Zeile führt zu einer weiterleitungs Seite, die prüft ob der User besteht.


echo "            <form name=\"login\" action=\"".LOGIN_URL."?redirect=".WB_URL.PAGES_DIRECTORY."/weiterleitung.php\" method=\"post\">";

Die Seite zur Abfrage

redirect=“.WB_URL.PAGES_DIRECTORY.“

Im Backend von Website Baker muss eine Seite auf versteckt angelegt werden. Titel (weiterleitung). Diese php Funktion prüft ob der User eine Seite hat, wenn ja kommt er gleich in das backend auf die Seite die er bearbeiten darf, wenn nein, kommt er auf die Startseite.

global $wb, $database;
$wb_startseite = WB_URL.PAGES_DIRECTORY."/";

if(FRONTEND_LOGIN == 'enabled' && is_numeric($wb->get_session('USER_ID'))) {
$current_userid = $wb->get_session('USER_ID');

        $query=$database->query("SELECT username FROM ".TABLE_PREFIX."users WHERE user_id = '".$current_userid."'");
        $username_handover=$query->fetchRow();

        $pagename_part = "/mitglieder/".$username_handover[0];
        
        $query=$database->query("SELECT page_id FROM ".TABLE_PREFIX."pages WHERE link = '".$pagename_part."'");
        $pageid_handover=$query->fetchRow();

 

        $benutzer_seite = WB_URL.PAGES_DIRECTORY."/mitglieder/".$wb->get_session('USERNAME').PAGE_EXTENSION;
        $benutzerseite_edit = WB_URL."/admin/pages/modify.php?page_id=".$pageid_handover[0];
        if($pageid_handover == "") {
                header('location: '.$wb_startseite);
                exit;   
        } else {
                header('location: '.$benutzerseite_edit); 
                 exit;
        }
} else {
        header('location: '.$wb_startseite);
        exit;       

}

In der Benutzerverwaltung wurden die Benutzer so angelegt dass jeder Benutzer auch eine Gruppe hat.

Also:

Gruppe: Max Mustermann – Benutzername: max-mustermann
Dabei ist zu achten das der Benutzername genauso heißt wie die Seite.
pages/ max-mustermann.php

Die Benutzer haben das Recht Ihre Seite zu bearbeiten, alle anderen Seiten können unter Seiten im Backend nur gesehen werden, nicht aber bearbeitet werden.

Diese Lösung einer Benutzerverwaltung ist gut für ältere User, die mit Internet nicht so gut zurecht kommen. Nach dem Login kommt gleich das WYSIWYG Feld bei dem dann geschrieben und gleich gespeichert werden kann.

Jürgen Rübig

  • StumbleUpon
  • Digg
  • Delicious
  • Technorati
  • Yahoo! Bookmarks
  • Twitter
  • MySpace
  • Google Bookmarks
  • Facebook
  • E-Mail

Eine Antwort zu “Benutzerverwaltung mit WebsiteBaker”

  1. admin says:

    Nachtrag:
    in Zeile 10 der versteckten Seite weiterleitung.

    $pagename_part = "/mitglieder/".$username_handover[0];

    Im oberen Tutorial ging es um Mitglieder die Informationen über ihre Arbeit im Netz veröffentlichen möchten. Diese Mitglieder wurden in einer Seite namens (mitglieder) eingefügt.

    Die Seite Mitglieder war dann die übergeordnete Datei.

    Mitglieder
    — Mitglied1
    — Mitglied2
    — Mitglied3
    — Mitglied4
    — Mitglied5
    usw