Seite 1 von 1
Rechte des angemeldeten User (FE) einer Kategorie/Artikel ?
Verfasst: Mi 21. Jan 2004, 23:03
von ubo
Hallo alle,
kann mir einer helfen und sagen wie ich die Rechte ermitteln kann, die ein angemeldeter User im Frontend hat an einer bestimmten Kategorie bzw. einem Artikel ?
Mir geht es hier besonders um das Recht "Frontend zugriff"
Ich moechte z.B. auf Kategorien bzw. Artikel nur dann verlinken in einem Modul wenn der angemeldete User auch die Rechte dazu besitzt.
Danke und gruesse aus Bochum
UBO
Verfasst: Do 22. Jan 2004, 09:38
von timo
mit der $perm-Klasse:
$perm->have_perm_area_action_item("str","front_allow", $db->f("idcat"))
Verfasst: Do 22. Jan 2004, 21:09
von ubo
Danke Timo,
leider bekomme ich so auch nur die Kategorien, bei denen ich das Recht expliziet gesetzt habe.
Die ungeschuetzten Kategorien werden auch rausgefiltert
Ich habe mir zum testen den Source der Service-Navigation genommen.
Code: Alles auswählen
. . .
$sql = "SELECT CAT.idcat AS idcat, name FROM ".
$cfg["tab"]["cat"]." AS CAT, ".
$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";
$db->query($sql);
while ( $db->next_record() ) {
if ($perm->have_perm_area_action_item("str","front_allow", $db->f("idcat"))) {
echo $db->f("name")."<br>";
}
} // end while
. . .
Hast du da evtl. einen Tip fuer mich ?
Verfasst: Do 22. Jan 2004, 22:02
von emergence
ich würd die abfrage ob ich ne berechtigung habe, um das query herum geben...
wenn er die berechtigung hat werden alle angezeigt wenn nicht
wird ein anderes query ausgeführt wo rücksicht auf den tabellen wert public genommen wird... an sich sollte das funktionieren...
Verfasst: Do 22. Jan 2004, 22:24
von ubo
Jau, das Public flag !! Das hat mir gefehlt, Thanks.
Ich habe die Abfrage jetzt erweitert:
Code: Alles auswählen
$sql = "SELECT CAT.idcat AS idcat, name, CATLANG.public as public FROM ".
$cfg["tab"]["cat"]." AS CAT, ".
$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";
$db->query($sql);
while ( $db->next_record() ) {
if ($db->f("public") == "1") {
echo $db->f("name")."<br>";
} elseif ($perm->have_perm_area_action_item("str","front_allow", $db->f("idcat"))) {
echo $db->f("name")."<br>";
}
} // end while
und schon klappts auch mit der schoenen Nachbarin
Besten Dank, bin mit der DB-Struktur in all Ihren feinheiten noch nicht so vertraut.
Aber meine Freizeit ist begrenzt, doch Contenido gefaellt mir MEGA !
Werde dies mal in die Servicenavigation einpflegen und posten.
Danke und Gruss
Uwe
Verfasst: Fr 17. Jun 2005, 11:41
von sepp
Genau so etwas brauche ich auch grad. Leider klappt es bei mir nicht so wie gewünscht.
Ich beabsichtige, in der Standard Hauptnavigation bestimmte Kategorien nur einblenden zu lassen, wenn es sich um einen angemeldeten User mit entsprechendem Frontendzugriff handelt.
Code: Alles auswählen
/* 3. Navigations Ebene */
$tpl->reset();
$tpl->set('d', 'NAME', $data['name']);
$tpl->set('d', 'TARGET', $data['target']);
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl->next();
if (($idcat=='21') || ($idcat=='23') || ($idcat=='24') || ($idcat=='25') || ($idcat=='26'))
{
if ($auth->auth["uid"] != "nobody")
{
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
}
}
else
{
if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
}
Das klappt zwar schon einigermassen, nur werden dann alle Kategorien angezeigt. Auch die, auf die der User eigentlich keinen Zugriff hat...
Er kann auch nicht drauf zugreifen, aber er kann sie sehen.
Nachtrag: er kann doch drauf zugreifen. alle User können das, auch ohne Haken beim frontend-Zugriff.

Gar nicht schön... Habe die 4.4.5 in der der Bug doch eigentlich behoben sein sollte. Kann ich das nachträglich noch ändern?
Die Abfrage von ubo hats bei mir leider nicht gebracht.
Wüsste da jemand ne elegante Lösung?