Gelöst [kein Bug]: Frontend-Berechtigungen werden ignoriert

Gesperrt
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Gelöst [kein Bug]: Frontend-Berechtigungen werden ignoriert

Beitrag von homtata »

Hallo,

ich habe mit früheren Versionen von Contenido schon Frontendgruppen eingerichtet.

In einer neu installierten 4.8.6 habe ich nun einen geschützten Baum mit 4 Kategorien, denen ich jeweils Frontendgruppenberechtigungen zugewiesen habe (pro Gruppe je 1 Kategorie). Wenn ich mich nun mit den Frontendbenutzern einwähle, die zur jeweiligen Kategorie gehören, sehen ALLE Benutzer (egal, welche Kategorie ich freigeschaltet habe) auch ALLE Kategorien !?

Hat jemand das gleiche Problem oder weiß Rat?

LG
Zuletzt geändert von homtata am Mo 28. Jul 2008, 16:23, insgesamt 1-mal geändert.
tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono »

Hast Du docs/techref/frontend/frontend.protectedcategories.html gelesen?
Unterstützt das verwendete Navigationsmodul geschützte Kategorieen?
Bis dann
Tono
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Beitrag von homtata »

nun ja, der fehler tritt in zusammenarbeit mit der standard "navigation main" ebenso auf wie mit meiner gedoppelten version. in anderen versionen von 4.8.6 mit dem navigationsmodul aus 4.6.23 tritt der fehler nicht auf.
für meinen geschützten bereich habe ich das standardmodul von contenido 4.8.6 nochmals kopiert - mit geänderten variablen an einigen stellen, damit es überhaupt angezeigt wird. und zwar so:
<?php
/**
* $RCSfile$
*
* Description: Navigation, left side.
*
* @version 1.0.0
* @author Rudi Bieller
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2008-04-07
* }}
*
* $Id$
*/

// include Contenido_FrontendNavigation class
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation_Breadcrumb.class.php');

// get start idcat
$iIdcatStart = getEffectiveSetting('navigation', 'idcat-restricted', 1);


// instantiate 2nd + 3rd template object, reset all
$tpl2 = new Template();
$tpl3 = new Template();

if (!isset($tpl) || !is_object($tpl)) {
$tpl = new Template();
}

$tpl->reset();
$tpl2->reset();
$tpl3->reset();

// build navigation
try {
$oFeNav3 = new Contenido_FrontendNavigation($db, $cfg, $client, $lang, $cfgClient);
$oBreadcrumb = new Contenido_FrontendNavigation_Breadcrumb($db, $cfg, $client, $lang, $cfgClient);
$aBreadcrumb = $oBreadcrumb->getAsArray($idcat, 1); // this nav starts at level 1
$oFeNav3->setAuth($auth); // to make sure user sees what he's allowed to see
$oContenidoCategories = $oFeNav3->getSubCategories($iIdcatStart, true);
if ($oContenidoCategories->count() > 0) {
foreach ($oContenidoCategories as $oContenidoCategory) {
$sSubcats = '';
$tpl2->reset();
$bHasActiveSubCat = false;
// check if we need to load subcategories
$oSubCatsLevel2 = $oFeNav3->getSubCategories($oContenidoCategory->getIdCat(), true);
$aSubCatsLevel2 = $oFeNav3->getSubCategories($oContenidoCategory->getIdCat(), false);
$bShowSubcatLevel2 = (intval($idcat) == $oContenidoCategory->getIdCat() || in_array(intval($idcat), $aSubCatsLevel2)
|| (isset($aBreadcrumb[2]) && intval($idcat) == $aBreadcrumb[2] && in_array($aBreadcrumb[1], $aSubCatsLevel2)))
? true : false;
if ($bShowSubcatLevel2 === true && $oSubCatsLevel2->count() > 0) {
foreach ($oFeNav3->getSubCategories($oContenidoCategory->getIdCat(), true) as $oSubCategory) {
$bHasActiveSubSubCat = false;
// check if we need to load subsubcategories
$oSubCatsLevel3 = $oFeNav3->getSubCategories($oSubCategory->getIdCat(), true);
$aSubCatsLevel3 = $oFeNav3->getSubCategories($oSubCategory->getIdCat(), false);
$bShowSubcatLevel3 = (intval($idcat) == $oSubCategory->getIdCat() ||
in_array(intval($idcat), $aSubCatsLevel3))
? true : false;
$sSubcats2 = '';
if ($bShowSubcatLevel3 === true && $oSubCatsLevel3->count() > 0) {
foreach ($oSubCatsLevel3 as $oSubSubCategories) {
if ($bHasActiveSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
$bHasActiveSubCat = true;
}
if ($bHasActiveSubSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
$bHasActiveSubSubCat = true;
}
toTpl($tpl3, $oSubSubCategories, (intval($idcat) == $oSubSubCategories->getIdCat() ? ' class="active"' : ''), '');
}
$sSubcats2 = $tpl3->generate('templates/navigation_main_item.html', true, false);
$tpl3->reset();
$tpl3->set('s', 'items', $sSubcats2);
$tpl3->set('s', 'css-class', ' class="subSubNavigation"');
$sSubcats2 = $tpl3->generate('templates/navigation_main_container.html', true, false);
}
if ($bHasActiveSubCat === false && intval($idcat) == $oSubCategory->getIdCat()) {
$bHasActiveSubCat = true;
}
toTpl3($tpl2, $oSubCategory,
(intval($idcat) == $oSubCategory->getIdCat() || $bHasActiveSubSubCat === true ? ' class="active"' : ''),
$sSubcats2);
}
$sSubcats = $tpl2->generate('templates/navigation_main_item.html', true, false);
$tpl2->reset();
$tpl2->set('s', 'items', $sSubcats);
$tpl2->set('s', 'css-class', ' class="subNavigation"');
$sSubcats = $tpl2->generate('templates/navigation_main_container.html', true, false);
}
toTpl($tpl, $oContenidoCategory, ($bHasActiveSubCat === true || intval($idcat) == $oContenidoCategory->getIdCat() ? ' class="active"' : ''), $sSubcats);
}
$sCats = $tpl->generate('templates/navigation_main_item.html', true, false);
$tpl->reset();
$tpl->set('s', 'css-class', '');
$tpl->set('s', 'items', $sCats);
$tpl->generate('templates/navigation_restricted_container.html');
}
} catch (Exception $e) {
echo 'Some error occured: ' . $e->getMessage() . ': ' . $e->getFile() . ' at line '.$e->getLine() . ' ('.$e->getTraceAsString().')';
}

/**
* Helper to push values to Template object
* @param Template $oTpl
* @param Contenido_Category $oCat
* @param string $sActiveCssClass must bei either empty string or " class="classname"
* @param string $sSubcats String with subcategories of current category
*/
function toTpl3(&$oTpl, Contenido_Category $oCat, $sActiveCssClass, $sSubcats) {
$oTpl->set('d', 'css-class', $sActiveCssClass);
$oTpl->set('d', 'url', 'front_content.php?idcat='.$oCat->getIdCat());
$oTpl->set('d', 'title', $oCat->getCategoryLanguage()->getName());
$oTpl->set('d', 'label', $oCat->getCategoryLanguage()->getName());
$oTpl->set('d', 'subcategories', $sSubcats); // followup level
$oTpl->next();
}
?>
Ich habe in der Mandanteneinstellung "navigation, idcat-restricted, 44" eingesetzt (denn 44 ist die idcat).
Was könnte noch nicht stimmen? wie ist im code "getEffectiveSetting" zu verwenden, und was sagt insbesondere die hintere zahl "1" dort aus??
homtata
Beiträge: 1145
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Beitrag von homtata »

Okay Leute,

das ist kein Bug, sondern ein Anwender- und Denkfehler:

- Contenido legt alle neu angelegten Frontend-User auch in die Standardgruppe "Contenidos", die alle Rechte besitzt. Dadurch wurden die einzelnen Gruppenrechte für meine User ausgehebelt.
- Nach Löschen der Gruppe "Contenidos" und des Standardusers läuft jetzt alles.

Danke an Timo Trautmann, dass ich ihm damit auf die Nerven fallen durfte ;-)
Gesperrt