WBCE CMS – Way Better Content Editing.
You are not logged in.
Moin. Is ja immer wieder mal Thema... Gibt es mittlerweile eine Möglichkeit, interne Bereiche zur Verfügung zu stellen, bei denen der Benutzer keinen Zugriff auf das Backend bekommt?
EDIT: Die diesem Post folgende Lösung bezieht sich auf eine frühere WBCE Version...
Last edited by screamindan (19.09.2019 17:10:18)
Offline
Du kannst eine Gruppe ohne Berechtigungen anlegen, die dieser Gruppe zugeordneten Benutzer haben dann ausschließlich lesenden Zugriff auf Seiten der Sichtbarkeitsstufe privat bzw. registriert, für die die Lesergruppe bei "Seite sehen (Frontend)" hinterlegt ist.
Allerdings können Benutzer diese Gruppe ihre eigenen Daten (Name, Mailadresse etc.) bearbeiten.
Es ist also out of the box nicht möglich, das als Sammelaccount zu verwenden; um dem Benutzer die Rechte zum Ändern der eigenen Daten zu entziehen, müssen die account/preferences.php und admin/preferences.php angepasst werden.
Angenommen, der Sammelaccount hat die Benutzer-ID 2:
account/preferences.php:
Nach
define('VISIBILITY', 'public');
einfügen:
$currentUser = $wb_inst->get_user_id();
Zeile
define('PAGE_CONTENT', WB_PATH.'/account/preferences_form.php');
ändern zu
if ($currentUser != 2) {
define('PAGE_CONTENT', WB_PATH.'/account/preferences_form.php');
} else {
define('PAGE_CONTENT', WB_PATH.'/account/preferences_noform.php');
}
Die /account/preferences_noform.php mit folgendem Inhalt anlegen:
<?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 Ändern der Daten!";
/admin/preferences/index.php:
Zeilen
// Parse template for preferences form
$template->parse('main', 'main_block', false);
$output = $template->finish($template->parse('output', 'page'));
return $output;
ändern zu
// Parse template for preferences form
if ($admin->get_user_id()!=2) {
$template->parse('main', 'main_block', false);
$output = $template->finish($template->parse('output', 'page'));
return $output;
} else {
return "Du hast keine Berechtigung zum Ändern der Daten!";
}
Last edited by florian (23.10.2018 17:27:15)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Ah prima, das dürfte so erstmal reichen. Wo kann ich die Benutzer ID denn sehen?
Offline
Admintools > User Search > als Suchbegriff * (oder den betr. Benutzernamen oder Teile davon mit Asterisk) eingeben und auf Suchen klicken
Last edited by florian (11.06.2018 09:10:41)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Vielen Dank, klappt gut!
Offline
Danke für die gute Anleitung, aber das ganze funktioniert nicht, wenn das Droplet LoginBox verwendet wird. Dort wird der Menüpunkt "Meine Daten" ausgegeben und kann angeklickt bzw. verändert werden. Wie krieg ich das hin, dies zu verhindern?
Offline
Das Droplet generiert keine eigene Seite zum Ändern der pers. Daten. Wenn Du wie oben beschrieben die account/preferences.php änderst, und dann Dich nicht mit Deinen eigenen (Admin-)Daten, sondern als Testnutzer anmeldest, wirst Du mMn beim Anklicken des "Meine Daten"-Links kein Formular zum Ändern der Daten sehen.
Um den Link aus der vom Droplet generierten Loginbox geht, so genügt es, die Zeile
$return_value .= '<li class="preference"><a href="'.PREFERENCES_URL.'" title="'.$MENU['PREFERENCES'].'">'.$MENU['PREFERENCES'].'</a></li>'."\n";
zu entfernen.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Aber dann kann niemand mehr die Passwort-Ändern-Funktion nutzen. Ich bräuchte es wie oben, dass eben nur eine bestimmte Gruppe die Daten nicht ändern kann, aber andere Gruppen schon.
Last edited by pfreud01 (23.10.2018 17:10:21)
Offline
Selbst hinbekommen: Das Droplet duplizieren und aus der Kopie ein Droplet LoginBoxOhnePreferences machen. Darin Zeile 107 entfernen. Nun kann sich die Gruppe ohne Backendzugriff damit einloggen ohne die Daten zu ändern. Bei mir gibts da eine Weiterleitung auf eine interne Seite. Den anderen Gruppen biete ich dort nochmals das normale Droplet an, wo die eigenen Daten änderbar sind. Reicht für mich erstmal. Danke für den Denkanstoß.
Offline
Moin Ich hab ja auf WBCE 1.4.0 umgestellt. Bei Anwahl von User search bekomme ich ne Fehlermeldung:
Warning: require(/www/htdocs/ordner/cms/modules/user_search/tool.php): failed to open stream: No such file or directory in /www/htdocs/ordner/cms/admin/admintools/tool.php on line 88
Offline
1. User Search ist durch Admin-Tools » Account- und Registrierungs-Einstellungen ersetzt worden.
2. Der Eintrag für User Search wird aus unerfindlichen Gründen beim Update nicht gelöscht. Bitte mal Erweiterungen > erweitert > Module neu laden ausführen.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Nach neu Laden ist es weg. Stimmt die Anleitung oben denn trotzdem? Das muss ich ja wieder da reinklöppeln...
Last edited by screamindan (16.09.2019 08:54:40)
Offline
Ja, müsste noch stimmen. Ansonsten: versuch macht kluch ;-)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Ich glaube, ein paar Pfade passen nicht.
define('PAGE_CONTENT', WB_PATH.'/account/preferences_form.php');
WB_PATH ist jetzt wahrscheinlich ACCOUNT_TOOL_PATH... Muss ich später mal vergleichen...
Offline
Ja, die sind neu, ob es eine Weiterleitung gibt weis ich nicht.
define('PAGE_CONTENT', ACCOUNT_TOOL_PATH .'/account/form_preferences.php');
Offline
Unter /account gibt es bei mir keine Datei form_preferences.php... Kannst Du die Anleitung bei Gelegenheit mal durchsehen? Is nich ganz brennend, würde ich aber gern wieder so haben.
Offline
Die Datei liegt unter /modules/tool_account_settings/account/
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Nach Anmelden im Backend und Klicken auf "meine Daten" kommt folgende Fehlermeldung:
Parse error: syntax error, unexpected end of file in /www/htdocs/ordner/cms/admin/preferences/index.php on line 178
Last edited by screamindan (16.09.2019 09:58:07)
Offline
Dann fehlt da irgendwo eine }
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
/* // 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) {
$template->parse('main', 'main_block', false);
$output = $template->finish($template->parse('output', 'page'));
return $output;
} else {
return "Du hast keine Berechtigung zum Ä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();
Das steht jetzt drin. Ich hoffe, man kann das so auskommentieren... Wo ne Klammer fehlt, seh ich nicht.
Last edited by screamindan (16.09.2019 10:05:43)
Offline
Wenn ich am Ende eine schliessende Klammer einfüge, kommt ein leerer Browsertab.
Offline
Parse error: syntax error, unexpected end of file in /www/htdocs/ordner/cms/admin/preferences/index.php on line 178
178 Zeilen? Die Datei admin/preferences/index.php hat ja selbst nur 167 Zeilen
Offline
Ich hab ja auch das hier eingefügt (siehe meinen Post oben)
// Parse template for preferences form
if ($admin->get_user_id()!=3) {
$template->parse('main', 'main_block', false);
$output = $template->finish($template->parse('output', 'page'));
return $output;
} else {
return "Du hast keine Berechtigung zum Ändern der Daten!";
}
Offline
Der komplette Inhalt der index.php
[== 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) {
$template->parse('main', 'main_block', false);
$output = $template->finish($template->parse('output', 'page'));
return $output;
} else {
return "Du hast keine Berechtigung zum Ä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();
Offline
Die Datei und der Bereich sind korrekt verschachtelt, da fehlt kein }
Was gerade auffällt $template heißt seit WBCE 1.4.0 jetzt $oTemplate vlt ist ja dass der Fehler
Offline