WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#26 16.09.2019 10:34:05

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

// Parse template for preferences form
	if ($admin->get_user_id()!=3) {							
    $otemplate->parse('main', 'main_block', false);
    $output = $otemplate->finish($otemplate->parse('output', 'page'));
    return $output;
	} else {
		return "Du hast keine Berechtigung zum Ändern der Daten!";
	} 

Ändert nichts, immernoch die gleiche Fehlermeldung.

Offline

#27 16.09.2019 10:36:19

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

Und wenn ich im Frontendlogin auf "meine daten" klicke, kommt diese Meldung:

Fatal error: Uncaught Error: Call to a member function get_user_id() on null in /www/htdocs/ordner/cms/account/preferences.php:36 Stack trace: #0 {main} thrown in /www/htdocs/ordner/cms/account/preferences.php on line 36

In Zeile 36 steht

define('VISIBILITY', 'public'); $currentUser = $wb_inst->get_user_id();

Beitrag geändert von screamindan (16.09.2019 10:37:59)

Offline

#28 16.09.2019 15:12:58

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

Ist der Code vom preferences_noform.php denn so ok (Pfade)?

[== PHP ==]
<?php

if (defined('WB_PATH') == false) {exit("Cannot access this file directly");}
$sCallingScript = $_SERVER['SCRIPT_NAME'];
$_SESSION['HTTP_REFERER'] = isset($_SESSION['HTTP_REFERER']) ? $_SESSION['HTTP_REFERER'] : $sCallingScript;
if ($wb->is_authenticated() === false) {
// User needs to login first
    header("Location: " . WB_URL . "/account/login.php?redirect=" . $wb->link);
    exit(0);
}

echo "Du hast keine Berechtigung zum &Auml;ndern der Daten!";

Offline

#29 16.09.2019 15:29:48

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

Angemeldet als Admin kann ich auch nicht auf "meine Daten" klicken; Fehlermeldung wie oben:

Parse error: syntax error, unexpected end of file in /www/htdocs/ordner/cms/admin/preferences/index.php on line 178

Offline

#30 16.09.2019 15:45:19

bernd
Developer

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

Also bei deinem Code aus #24 fehlt mir (wenn ich jetzt nicht total blind bin) irgendwie die schließende } für die function build_page() {

Frag mich jetzt blos nicht wo die hin muss, aus dem Bauch raus würde ich sagen vor den Kommentar // test if valid ...


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#31 17.09.2019 12:54:18

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

bernd schrieb:

...aus dem Bauch raus würde ich sagen vor den Kommentar // test if valid ...

Dein Bauch hatte Recht. big_smile
Klammer davor eingefügt; es rennt wieder... Vielen Dank an alle für die Hilfe! thumb_up

Die admin/preferences/index.php komplett

[== PHP ==]
<?php
/**
 *
 * @category        admin
 * @package         preferences
 * @author          WebsiteBaker Project
 * @copyright       Ryan Djurovich
 * @copyright       WebsiteBaker Org. e.V.
 * @link            http://websitebaker.org/
 * @license         http://www.gnu.org/licenses/gpl.html
 * @platform        WebsiteBaker 2.8.3
 * @requirements    PHP 5.3.6 and higher
 * @version         $Id: index.php 5 2015-04-27 08:02:19Z luisehahne $
 * @filesource      $HeadURL: https://localhost:8443/svn/wb283Sp4/SP4/branches/wb/admin/preferences/index.php $
 * @lastmodified    $Date: 2015-04-27 10:02:19 +0200 (Mo, 27. Apr 2015) $
 *
 */

// prevent this file from being accessed directly
//if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
//Workaround if this is first page (WBAdmin in use)

// put all inside a function to prevent global vars
function build_page( &$admin, &$database )
{
    global $HEADING, $TEXT;
    include_once WB_PATH.'/framework/functions-utf8.php';
    
    // Setup template object, parse vars to it, then parse it
    // Create new template object
    $oTemplate = new Template(dirname($admin->correct_theme_source('preferences.htt')));
    $oTemplate->set_file( 'page', 'preferences.htt' );
    $oTemplate->set_block( 'page', 'main_block', 'main' );
    
    // read user-info from table users and assign it to template
    $sSql  = 'SELECT `display_name`, `username`, `email` FROM `{TP}users` WHERE `user_id` = %s';
    if ($res_user = $database->query(sprintf($sSql, (int)$admin->get_user_id()))){
        if ($rec_user = $res_user->fetchRow(MYSQL_ASSOC) ) {
            $oTemplate->set_var(
                array(
                    'DISPLAY_NAME' => $rec_user['display_name'],
                    'USERNAME'     => $rec_user['username'],
                    'EMAIL'        => $rec_user['email'],
                    'ADMIN_URL'    => ADMIN_URL               
                )
            ); 
        }
    }
    
    // read available languages from table addons and assign it to the template
    $sSql  = "SELECT * FROM `{TP}addons` WHERE `type` = 'language' ORDER BY `directory`";
    if ($res_lang = $database->query($sSql)) {
        $oTemplate->set_block('main_block', 'language_list_block', 'language_list');
        while($rec_lang = $res_lang->fetchRow(MYSQL_ASSOC)){
            $langIcons = (empty($rec_lang['directory'])) ? 'none' : strtolower($rec_lang['directory']);
            $oTemplate->set_var(
                array(
                    'CODE'     => $rec_lang['directory'],
                    'NAME'     => $rec_lang['name'],
                    'FLAG'     => WB_URL.'/languages/'.$langIcons,
                    'SELECTED' => LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : ''               
                )
            ); 
            $oTemplate->parse('language_list', 'language_list_block', true);
        }
    }
    
    // Insert default timezone values
    $user_time = true;
    include_once ADMIN_PATH.'/interface/timezones.php';
    $oTemplate->set_block('main_block', 'timezone_list_block', 'timezone_list');
    foreach($TIMEZONES as $hour_offset => $title){
        $oTemplate->set_var(
            array(
                'VALUE'     => $hour_offset,
                'NAME'      => $title,
                'SELECTED'  => $admin->get_timezone() == ($hour_offset * 3600) ? ' selected="selected"' : ''
            )
        );
        $oTemplate->parse('timezone_list', 'timezone_list_block', true);
    }
    
    // Insert date format list
    include_once ADMIN_PATH.'/interface/date_formats.php';
    $oTemplate->set_block('main_block', 'date_format_list_block', 'date_format_list');
    foreach ($DATE_FORMATS as $format => $title )
    {
        $format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
        $oTemplate->set_var( 'VALUE', ($format != 'system_default' ? $format : 'system_default') );
        $oTemplate->set_var( 'NAME',  $title );
        if ((DATE_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) ||
            ('system_default' == $format && isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) )
        {
            $oTemplate->set_var('SELECTED', ' selected="selected"');
        }else {
            $oTemplate->set_var('SELECTED', '');
        }
        $oTemplate->parse('date_format_list', 'date_format_list_block', true);
    }
    
    // Insert time format list
    include_once ADMIN_PATH.'/interface/time_formats.php';
    $oTemplate->set_block('main_block', 'time_format_list_block', 'time_format_list');
    foreach ($TIME_FORMATS as $format => $title )
    {
        $format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
        $oTemplate->set_var('VALUE', $format != 'system_default' ? $format : 'system_default' );
        $oTemplate->set_var('NAME',  $title);
        if ((TIME_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) ||
            ('system_default' == $format && isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) )
        {
            $oTemplate->set_var('SELECTED', ' selected="selected"');
        } else {
            $oTemplate->set_var('SELECTED', '');
        }
        $oTemplate->parse('time_format_list', 'time_format_list_block', true);
    }

    $oTemplate->set_var(
        array( 
            // assign systemvars to template
            'ADMIN_URL'          => ADMIN_URL,
            'WB_URL'             => WB_URL,
            'THEME_URL'          => THEME_URL,
            'ACTION_URL'         => ADMIN_URL.'/preferences/save.php',
            'FTAN'               => $admin->getFTAN(),
            'FORM_NAME'          => 'preferences_save',
            'INPUT_NEW_PASSWORD' => $admin->passwordField('new_password_1'),

            // assign language vars
            'HEADING_MY_SETTINGS'        => $HEADING['MY_SETTINGS'],
            'HEADING_MY_EMAIL'           => $HEADING['MY_EMAIL'],
            'HEADING_MY_PASSWORD'        => $HEADING['MY_PASSWORD'],
            'TEXT_SAVE'                  => $TEXT['SAVE'],
            'TEXT_RESET'                 => $TEXT['RESET'],
            'TEXT_DISPLAY_NAME'          => $TEXT['DISPLAY_NAME'],
            'TEXT_USERNAME'              => $TEXT['USERNAME'],
            'TEXT_EMAIL'                 => $TEXT['EMAIL'],
            'TEXT_LANGUAGE'              => $TEXT['LANGUAGE'],
            'TEXT_TIMEZONE'              => $TEXT['TIMEZONE'],
            'TEXT_DATE_FORMAT'           => $TEXT['DATE_FORMAT'],
            'TEXT_TIME_FORMAT'           => $TEXT['TIME_FORMAT'],
            'TEXT_CURRENT_PASSWORD'      => $TEXT['CURRENT_PASSWORD'],
            'TEXT_NEW_PASSWORD'          => $TEXT['NEW_PASSWORD'],
            'TEXT_RETYPE_NEW_PASSWORD'   => $TEXT['RETYPE_NEW_PASSWORD'],
            'TEXT_NEW_PASSWORD'          => $TEXT['NEW_PASSWORD'],
            'TEXT_RETYPE_NEW_PASSWORD'   => $TEXT['RETYPE_NEW_PASSWORD'],
            'TEXT_NEED_CURRENT_PASSWORD' => $TEXT['NEED_CURRENT_PASSWORD'],
            'EMPTY_STRING'               => ''
        )
    );
    
 /*   // Parse template for preferences form
    $oTemplate->parse('main', 'main_block', false);
    $output = $oTemplate->finish($oTemplate->parse('output', 'page'));
    return $output;
	}
*/

// Parse template for preferences form
	if ($admin->get_user_id()!=3) {							
    $oTemplate->parse('main', 'main_block', false);
    $output = $oTemplate->finish($oTemplate->parse('output', 'page'));
    return $output;
	} else {
		return "Du hast keine Berechtigung zum &Auml;ndern der Daten!";
	}  
}
// test if valid $admin-object already exists (bit complicated about PHP4 Compatibility)
if (!(isset($admin) && is_object($admin) && (get_class($admin) == 'admin')) )
{
    require '../../config.php';
    require_once WB_PATH.'/framework/class.admin.php';
    $admin = new admin('Preferences');
}
echo build_page($admin, $database);
$admin->print_footer();

Beitrag geändert von screamindan (17.09.2019 12:56:43)

Offline

#32 19.09.2019 11:38:29

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

So. Eine Sache noch gefunden. Als Mitglied ohne Zugriff angemeldet (Frontend). Zum Abmelden auf das Schlüsselsymbol geklickt, da steht dann meine Daten. Bei Klick darauf erscheint folgendes:

Fatal error: Uncaught Error: Call to a member function get_user_id() on null in /www/htdocs/ordner/cms/account/preferences.php:36 Stack trace: #0 {main} thrown in /www/htdocs/ordner/cms/account/preferences.php on line 36

Kann da nochmal wer helfen? Is ja eigentlich mehr ein Schönheitsfehler, Zugriff auf die Daten hat man ja nicht...

Beitrag geändert von screamindan (19.09.2019 11:39:24)

Offline

#33 19.09.2019 14:16:33

florian
Administrator

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

So, hier alle Änderungen, die erforderlich sind, um in WBCE 1.4.0 einen Benutzeraccount ohne Möglichkeit zur Änderung der eigenen Daten zu erstellen.

Im Beispiel hat der eingeschränkte Account die ID 2. Dies ist entsprechend an die Begebenheiten anzupassen, d.h. an den beiden Stellen, wo im nachfolgenden Code 2 steht, ist dann die tatsächliche ID zu hinterlegen.
Die User-ID kann im Admin-Tool "Account- und Registrierungs-Einstellungen" abgelesen werden.

1.) account/preferences.php bearbeiten:

define('PAGE_CONTENT', ACCOUNT_TOOL_PATH .'/account/form_preferences.php');

Ändern zu

$currentUser = $oAccounts->get_user_id();
if ($currentUser != 2) {
define('PAGE_CONTENT', ACCOUNT_TOOL_PATH.'/account/form_preferences.php');
} else {
define('PAGE_CONTENT', ACCOUNT_TOOL_PATH.'/account/form_preferences_no.php');
}

2.) Neue Datei form_preferences_no.php anlegen in /modules/tool_account_settings/account
Inhalt:

<?php

if (defined('WB_PATH') == false) {exit("Cannot access this file directly");}
$sCallingScript = $_SERVER['SCRIPT_NAME'];
$_SESSION['HTTP_REFERER'] = isset($_SESSION['HTTP_REFERER']) ? $_SESSION['HTTP_REFERER'] : $sCallingScript;
if ($wb->is_authenticated() === false) {
// User needs to login first
    header("Location: " . WB_URL . "/account/login.php?redirect=" . $wb->link);
    exit(0);
}

echo "Du hast keine Berechtigung zum &Auml;ndern der Daten!";

3.) admin/preferences/index.php bearbeiten:
Zeilen

 $oTemplate->parse('main', 'main_block', false);
    $output = $oTemplate->finish($oTemplate->parse('output', 'page'));
    return $output;

ändern zu

if ($admin->get_user_id()!=2) {							
    $oTemplate->parse('main', 'main_block', false);
    $output = $oTemplate->finish($oTemplate->parse('output', 'page'));
    return $output;
	} else {
		return "Du hast keine Berechtigung zum &Auml;ndern der Daten!";
	} 

Achtung: Danach folgt eine weitere geschweifte Klammer (Abschluss der Funktion build_page), diese muss erhalten bleiben!


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#34 19.09.2019 17:00:19

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

screamindan schrieb:

Fatal error: Uncaught Error: Call to a member function get_user_id() on null in /www/htdocs/ordner/cms/account/preferences.php:36 Stack trace: #0 {main} thrown in /www/htdocs/ordner/cms/account/preferences.php on line 36

Hallo Florian. Ich hab alles nochmal neu wie Du beschrieben hast eingebaut, bekomme aber bei Klick auf "Meine Daten" im Frontend immernoch die Fehlermeldung... neutral

Das steht in Zeile 36

define('VISIBILITY', 'public'); $currentUser = $wb_inst->get_user_id();

Beitrag geändert von screamindan (19.09.2019 17:01:44)

Offline

#35 19.09.2019 17:04:22

florian
Administrator

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

Es muss
$currentUser = $oAccounts->get_user_id();
heißen


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#36 19.09.2019 17:07:21

screamindan
Mitglied

Re: GELÖST: Mitgliederbereich ohne Backendzugriff

Danke, jetzt läufts! Hab die WBCE 1.4.0 Lösung im ersten Beitrag verlinkt...

Offline

Liked by:

florian

Fußzeile des Forums

up