Thread Verfasser: Querndt
Thread ID: 264
Thread Info
Es gibt 4 Beiträge zu diesem Thema, und es wurde 5030 Mal angesehen.
 Thema drucken
Wartungsmodus
Querndt
Guten Morgen,

ich möchte gerne am Wartungsmodus etwas ändern, doch bevor ich das ganze Versuche eine Simple Frage dazu. Kann ich den Wartungsmodus so umbauen das wärend einer Wartung auch eine Bestimmte Benutzergruppe sich einloggen kann ? Denn wenn dies gar nicht erst gehen sollte brauche ich mir das auch erst gar nicht umbauen.

MFG

TSW-Papst

Zusammengefügt am 22. Juni 2014 um 18:17:15:
Hallo,

also was ich nun schon gemacht habe, das ich im Admin Bereich beim Wartungsmodus Level auch eine Benutzergruppe auswählen kann.

Jetzt ist halt nur noch die Frage, ob es auch geht das ganze so umzubauen das sich eine Benutzergruppe auch einloggen kann.

Jemand ne Idee wie ich das mache.

Folgenden Code habe ich bereits gefunden in der /admin/settings_security.php der das Regelt:


echo "<td width='50%' class='tbl'><select name='maintenance_level' class='textbox'>\n";
echo "<option value='102'".($settings['maintenance_level'] == "102" ? " selected='selected'" : "").">".$locale['676']."</option>\n";
echo "<option value='103'".($settings['maintenance_level'] == "103" ? " selected='selected'" : "").">".$locale['677']."</option>\n";
echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['678']."</option>\n";
echo "</select></td>\n";


jetzt habe ich gedacht ich könnte doch einfach:


echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['678']."</option>\n";


Kopieren und in der Localen ne neue Nummer hinzufügen und diese in der Kopieretn Zeite eintragen. Hat auch soweit geklappt. In der Auswahl bei den Settimgs steht nun eine neie Zeile mit dem Text welchen ich in der Localen eingetragen habe.

Das das ganze jetzt noch nicht so funktioniert wie es sollte ist klar, da ich ja nur Locale hinzugefügt habe.

Wie genau muss nun der Code aussehen, das auch Benutzer Gruppen sich einloggen können ?

Folgenden Code habe ich derzeit drin:


echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['56896']."</option>\n";


Wenn der Code geändert wäre, ist ja noch die Frage ob das alles ist oder irgendwo noch etwas geändert werden muss?

MFG

TSW-Papst

Zusammengefügt am 28. Juni 2014 um 09:13:57:
*PUSH*

Mitlerweile jemand ne Idee wie ich das Verwirklichen kann ?

LG

TSW-Papst
Bearbeitet von Querndt am 28. Juni 2014 07:14:13
DickeslachenDickeslachenDickeslachen
Dumm ist nur der, der dummes tut
DickeslachenDickeslachenDickeslachen
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Dat Tunes
Gehen wird es sicherlich, dazu müsste man erstmal die Stellen auch in der Core finden, die festlegen bei der Loginabfrage, welches Userlevel sich einloggen darf und welches nicht.

Denke mal das wird in der Maincore sein, wo aber zur Zeit keine Ahnung, da ich keine core grade zur Hand habe und via Telefon grade schreibe.

Wenn du das gefunden hast, sollte es auch umsetzbar sein.
Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Querndt
Ich hab mir nun alle Codezeilen bezüglich des maintenance_level angeschaut und bin zu folgendem ergebniss gekommen.

DIe einstellung des Levels wer zugriff wärend der Wartung hat wird über diesen Codeabschnitt geregelt:

aus der administration/settings_security.php


   echo "<td width='50%' class='tbl'>".$locale['675']."</td>\n";
   echo "<td width='50%' class='tbl'><select name='maintenance_level' class='textbox'>\n";
   echo "<option value='102'".($settings['maintenance_level'] == "102" ? " selected='selected'" : "").">".$locale['676']."</option>\n";
   echo "<option value='103'".($settings['maintenance_level'] == "103" ? " selected='selected'" : "").">".$locale['677']."</option>\n";
   echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['678']."</option>\n";
   echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['Team_Level_Wartung']."</option>\n";
   echo "</select></td>\n";
   echo "</tr>\n<tr>\n";
   echo "<td width='50%' class='tbl'>".$locale['657']."</td>\n";
   echo "<td width='50%' class='tbl'><select name='maintenance' class='textbox'>\n";
   echo "<option value='1'".($settings['maintenance'] == "1" ? " selected='selected'" : "").">".$locale['502']."</option>\n";
   echo "<option value='0'".($settings['maintenance'] == "0" ? " selected='selected'" : "").">".$locale['503']."</option>\n";
   echo "</select></td>\n";


Damit der Level geregelt werden kann, ist Vermutlich dieser Abschnitt hier verantwortlich:

aus der maincore.php


   // User level, Admin Rights & User Group definitions
   define("iGUEST", $userdata['user_level'] == 0 ? 1 : 0);
   define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0);
   define("iADMIN", $userdata['user_level'] >= 102 ? 1 : 0);
   define("iSUPERADMIN", $userdata['user_level'] == 103 ? 1 : 0);
   define("iUSER", $userdata['user_level']);
   define("iUSER_RIGHTS", $userdata['user_rights']);
   define("iUSER_GROUPS", substr($userdata['user_groups'], 1));


weil dort die User Level geregelt werden.

Im ersten Code Abschnitt wird ja zur auswahl gestellt ob Admin´s, Seitenadmins oder Seiteninhaber berechigt sind sich einzuloggen.

Jetzt möchte ich halt dort einfach eine 4 auswahl haben, das eine bestimmte Benutzergruppe Zugriff hat. Dazu habe ich wie in einem anderem Beitrag erwähnt folgenden Code Kopiert:


echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['678']."</option>\n";


daraus habe ich diesen hier gemacht:


echo "<option value='1'".($settings['maintenance_level'] == "1" ? " selected='selected'" : "").">".$locale['Team_Level_Wartung']."</option>\n";


wie man sehen kann, habe ich damit erst einmal nur einen neuen Eintrag in der Localen erstellt. Wenn ich nun beim einstellen diese 4 Option wähle, ist das ja nix anderes als der Seiteninhaber nur mit anderem Text wegen dem eintrag in der Localen.

Jetzt möchte diesen neuen Code halt so umschreiben, das er die ID einer Benutzergruppe abfragt. Da liegt nun aber mein Problem, da komm ich leider nicht weiter.

Ich habe auch schon folgenden Code Probiert:


echo "<option value='5'".($settings['maintenance_groups'] == "5" ? " selected='selected'" : "").">".$locale['Team_Level_Wartung']."</option>\n";


habe halt einfach probiert aus maintenance_level , maintenance_groups gemacht und dann einfach die ID der Gruppe eingetragen. Damit laufe ich aber auf fehler.

Hat also jemand ne Idee wie diese Zeile geschrieben werden muss, damit es funktioniert.

Aus der administration/settings_security.php ist dieser Abschnitt dafür zustaändig die änderung in der DB durchzuführen:


   $result = dbquery("UPDATE ".DB_SETTINGS." SET settings_value='".(isnum($_POST['maintenance_level']) ? $_POST['maintenance_level'] : "102")."' WHERE settings_name='maintenance_level'");
   if (!$result) { $error = 1; }
   $result = dbquery("UPDATE ".DB_SETTINGS." SET settings_value='".(isnum($_POST['maintenance']) ? $_POST['maintenance'] : "0")."' WHERE settings_name='maintenance'");
   if (!$result) { $error = 1; }
   $result = dbquery("UPDATE ".DB_SETTINGS." SET settings_value='".addslash(descript($_POST['maintenance_message']))."' WHERE settings_name='maintenance_message'");


da dort aber kein maintenance_groups geregelt ist, wird Vermutlich auch das Update in der DB nicht durchgeführt. Ich denke mal dafür müsste man ja auch einen DB eintrag erstelle, damit ein Update der maintenance_groups gergelt wird.

MFG

TSW-Papst
DickeslachenDickeslachenDickeslachen
Dumm ist nur der, der dummes tut
DickeslachenDickeslachenDickeslachen
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
John Doe
Hi,

also soweit mir bekannt, kannst du ja Benutzergruppen im Adminbereich anlegen, bis zum umfallen. Weiter kannst du da, wo du den Wartungsmodus anschaltest/abschaltest, einstellen, ab welchen Benutzerlevel man Zugriff trotz Wartungsmodus haben darf. Stelle da doch ein, das Benutzergruppe XY Zugriff haben darf und werfe alle in die Gruppe rein ,die rein sollen - Fertig! Dickeslachen
Dieses Mitglied wurde gelöscht!
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: