WebsiteBaker Community Forum

WebsiteBaker Support (2.13.x) => Modules => Topic started by: Concilla on November 06, 2023, 09:34:59 AM

Title: wbBackup 1.3.1.15 nur für den Hauptadministrator?
Post by: Concilla on November 06, 2023, 09:34:59 AM
Hallo an alle,

ich wollte gern einem Benutzer bzw. einer Gruppe erlauben, über das oben erwähnte Tool Backups von den Dateien und der Datenbank zu machen. Auch wenn ich der Gruppe Admin-Rechte zuweise, erhalte ich, wenn ich in den Admin-Tools dann als betreffender Benutzer den Button "wbBackup 1.3.1.15" anklicke, die rote hervorgehobene Information: "Sie sind nicht berechtigt, diese Seite zu sehen."

Ist es nicht möglich hier einem Benutzer bzw einer Gruppe die Benutzung dieses Tools zu ermögliche?

Vielen Dank im Voraus.
Title: Re: wbBackup 1.3.1.15 nur für den Hauptadministrator?
Post by: sternchen8875 on November 06, 2023, 01:20:02 PM
spannendes Thema, das immer für erhöhten Blutdruck sorgt   :wink:

Also...
- es gibt bei den Entwicklern die Meinung, das bestimmte Tools aus Sicherheitsgründen nur dem SuperAdmin vorbehalten werden sollten und ein Datenbank- oder Dateien-Backup gehört nun mal dazu, weil der ausführende Benutzer nun mal damit Zugriff auf z.b. persönliche Ordner hätte (unter /media), Inhalte der privaten Seiten erlangen könnte oder auch den aus der Datenbank. Solang das der verantwortliche SuperAdmin mit der ID == 1 ist, kein Thema, schließlich ist er ja verantwortlich.

Andererseits ist es organisatorisch manchmal nicht zu vermeiden, das ich als SuperAdmin jemanden Anders beauftragen möchte. Ich bin z.b. bei fast allen Kundenseiten der SuperAdmin, bin aber nur auf ganz wenigen auch für Inhalte zuständig. Ich bin sozusagen der technische Admin, während der jeweilige Owner der Content-Admin ist. In diesem Fall kümmert sich dann auch der ContentAdmin um eine regelmäßige Sicherung über das BackupModul.

Die offizielle Version des Moduls sieht vor, das nur der User mit der UserId == 1 das Tool benutzen darf (Datei addon.php, Z.46)
Code: [Select]
if ((int)$oApp->getUserId() !== 1) {
Nach Möglichkeit sollte die Anzahl der Zugriffsberechtigte n auf ein Minimum reduziert werden, deshalb würde ich eine User-Spezifische Erlaubnis einer Gruppenberechtigung vorziehen.

Voraussetzung ist eine Usergruppe, die Berechtigungen auf AdminTools und! auf das Backup-Modul hat.

Für eine Einzelberechtigung tauschen wir etwas Code aus in der addon.php des Backup-Moduls

Original ab Zeile 46
Code: [Select]
if ((int)$oApp->getUserId() !== 1) {
    // back to overview
        $backlink = $oReg->AcpUrl .'admintools/tool.php';
        $sErrorMsg = sprintf("%s",$oTrans->MESSAGE_FRONTEND_SORRY_NO_VIEWING_PERMISSIONS);
        $oApp->print_error( $sErrorMsg, $backlink);
    }

    $sCommand = ($sCommand ?? 'tool');
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'backup') ? 'backup' : $sCommand);
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'deletefile') ? 'deletefile' : $sCommand);
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'savesetting') ? 'savesetting' : $sCommand);
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'ModifySettings') ? 'ModifySettings' : $sCommand);

    // set the name of the addon
    //$sAddonName = basename(__DIR__);
    $sDispatcherFile = $sModulesPath.'SimpleCommandDispatcher.inc.php';
    if (is_readable($sDispatcherFile)){include($sDispatcherFile);}

// end of file

ändern in
Code: [Select]
if (((int) $oApp->getUserId() === 1) || ((int) $oApp->getUserId() === 2)) {
    $sCommand = ($sCommand ?? 'tool');
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'backup') ? 'backup' : $sCommand);
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'deletefile') ? 'deletefile' : $sCommand);
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'savesetting') ? 'savesetting' : $sCommand);
    $sCommand = ((isset($aRequestVars['cmd']) && $aRequestVars['cmd'] == 'ModifySettings') ? 'ModifySettings' : $sCommand);

    // set the name of the addon
    $sDispatcherFile = $sModulesPath . 'SimpleCommandDispatcher.inc.php';
    if (is_readable($sDispatcherFile)) {
        include($sDispatcherFile);
    }
} else {
    // back to overview
    $backlink = $oReg->AcpUrl . 'admintools/tool.php';
    $sErrorMsg = sprintf("%s", $oTrans->MESSAGE_FRONTEND_SORRY_NO_VIEWING_PERMISSIONS);
    $oApp->print_error($sErrorMsg, $backlink);

Wichtig ist hier Zeile 1 des gezeigten Codes, er erlaubt den Usern mit der ID == 1 oder der ID == 2 den Zugriff. Die ID des zweiten Users wäre dann entsprechend anzupassen.
Die Abfrage ließe sich auch erweitern mit
Code: [Select]
if (((int) $oApp->getUserId() === 1) || ((int) $oApp->getUserId() === 2) || ((int) $oApp->getUserId() === 3) || ((int) $oApp->getUserId() === 4)) {




Title: Re: wbBackup 1.3.1.15 nur für den Hauptadministrator?
Post by: hgs on November 06, 2023, 02:02:30 PM
Danke!So funktionirt es mit der Deligation an den ContentAdmin.
und die Verantwortung liegt bei mir als WebMaster diese Rechte UserId-mäßig zu erweitern, oder ebend auch nicht.
Bitte ins Original-Modul so einbauen, damit wäre vielen geholfen.
Ich benötige es gerade bei einer neuen Seite, die der ContentAdmin nach und nach selber erarbeiten möchte und duch das tolle Tool, kann er nach erfolgreichem lernen selber ein Backup ziehen.

Title: Re: wbBackup 1.3.1.15 nur für den Hauptadministrator?
Post by: Concilla on November 06, 2023, 04:18:23 PM
Hallo sternchen,

vielen Dank für die ausführliche Erklärung und die Lösung. Werde es erst einmal mit dem Kunden besprechen und dann ggfls. so anpassen. Bzw. natürlich erst einmal testen.

LG
Title: Re: wbBackup 1.3.1.15 nur für den Hauptadministrator?
Post by: sternchen8875 on November 06, 2023, 04:42:15 PM
Bitte ins Original-Modul so einbauen, damit wäre vielen geholfen.

geht so nicht mit der oben geposteten Lösung, das wäre per Default ja schon eine Freigabe für den User mit der dort eingetragenn ID.
Das beste wäre wohl eine modul-eigene Rechtevergabe, die der SuperAdmin dann vergeben könnte. Wäre relativ einfach umzusetzen, widerspricht aber der Philosophie der Entwickler.
Ich verstehe beide Seiten....