Seite 1 von 1

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

Verfasst: Do 24. Jul 2008, 10:52
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

Verfasst: Do 24. Jul 2008, 10:59
von tono
Hast Du docs/techref/frontend/frontend.protectedcategories.html gelesen?
Unterstützt das verwendete Navigationsmodul geschützte Kategorieen?

Verfasst: Do 24. Jul 2008, 11:08
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??

Verfasst: Mo 28. Jul 2008, 15:59
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 ;-)