Seite 1 von 1
Frontend Login - gezieltes Sperren
Verfasst: Mi 22. Sep 2004, 20:20
von Karl
Ich möchte Benutzern und Gruppen gezielt Frontend-Zugriff auf bestimmte Artikel/Kategorien erlauben. Das funktionierte bisher mit einem Modul von Black Widow, das man in den Head eines jeden zu sperrenden Artikels brachte.
Plötzlich klappt das nicht mehr. Wenn sich ein Benutzer gültig einloggt, hat er jetzt Zugriff auf *alle* geschützten Artikel, egal ob ich ihm das per "Frontend Zugriff" erlaubt habe oder nicht.
Fragen:
- Hat das damit zu tun, dass ich von 4.4.3 nach 4.4.4 gewechselt habe?
- Hat jemand möglicherweise das Modul angepasst?
- Hat jemand vielleicht eine andere Möglichkeit gefunden?
- oder gibt es in der 4.4.4 sogar eine "offizielle" Möglichkeit, mein Dingen umzusetzen?
Für Hilfe sehr dankbar
Gruss Karl
Verfasst: Do 23. Sep 2004, 07:29
von emergence
hast du auch einen link zum modul ? vielleicht kann dir dann eher einer helfen...
Verfasst: Do 23. Sep 2004, 15:17
von Karl
Das Modul ist dieses hier:
Code: Alles auswählen
<?php
/****************************************************
** Contenido 4.4.x Modul
** OUTPUT
**
** Name: Privacy Check
** Autor: Timo Goedel
** Version: 0.1
** Erstellt: 07.01.2004
** Modifiziert: 07.01.2004
*****************************************************/
$areaID = 6; //ID of the area called "str"
$actionID = 359; //ID of the action called "front_allow" and the idarea = $areaID
$redirectTime = 5000; //time to wait before redirecting
$redirectURL = $sess->url('front_content.php'); //URL to redirect (no user logged in)
$redirectURLDenied = $sess->url('front_content.php'); //URL to redirect (user is not authorized)
$redirectText = 'Startseite'; //statusbar-text of the redirect-link (onmouseover)
$accessGranted = false;
if ($auth->auth["uid"] != "nobody")
{
$permissions = $auth->auth["perm"];
$permissions = explode(',', $permissions);
foreach ($permissions as $perm)
if ($perm == "sysadmin" || $perm == "admin[".$client."]")
$accessGranted = true;
if (!$accessGranted)
{
$db_Connect = new DB_Contenido;
$sql_checkFrontendAccess = "SELECT rights.idright
FROM ".$cfg["tab"]["rights"]." rights,
".$cfg["tab"]["groupmembers"]." groupmembrs
WHERE rights.idarea = ".$areaID." AND
rights.idaction = ".$actionID." AND
rights.idclient = ".$client." AND
rights.idlang = ".$lang." AND
(rights.idcat = 0 OR rights.idcat = ".$idcat.") AND
(rights.user_id = '".$auth->auth["uid"]."' OR
(groupmembrs.user_id = '".$auth->auth["uid"]."' AND
rights.user_id = groupmembrs.group_id));";
$db_Connect->query($sql_checkFrontendAccess);
if ($db_Connect->next_record())
$accessGranted = true;
}
if(!$accessGranted)
{
echo("<script type=\"text/javascript\">\r\n<!--\r\nwindow.setTimeout(\"window.location.href = \\\"".$redirectURLDenied."\\\"\", ".$redirectTime.");\r\n//-->\r\n</script>");
echo("</head"."><body>");
echo("<p align=\"center\"><br/>Sie haben leider nicht genügend Rechte um diese Seite zu betreten!<br/>Sie werden in ca. ".round($redirectTime/1000,0)." Sekunden weitergeleitet ...<br/>... sollte Ihr Browser keine Weiterleitung unterstützen, klicken Sie bitte <a href=\"".$redirectURLDenied."\" onMouseover=\"status='".$redirectText."';return true;\" onMouseout=\"status='';return true;\">hier</a>!</p>");
echo('</body></html>');
die();
}
}
else
{
echo("<script type=\"text/javascript\">\r\n<!--\r\nwindow.setTimeout(\"window.location.href = \\\"".$redirectURL."\\\"\", ".$redirectTime.");\r\n//-->\r\n</script>");
echo("</head"."><body>");
echo("<p align=\"center\"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>Diese Seite ist ein geschützer Bereich!<br/>Sie müssen sich zunächst mit Ihrem Benutzernamen und Passwort anmelden!<br/><br/>Sie werden in ca. ".round($redirectTime/1000,0)." Sekunden weitergeleitet ...<br/>... sollte Ihr Browser keine Weiterleitung unterstützen, klicken Sie bitte <a href=\"".$redirectURL."\" onMouseover=\"status='".$redirectText."';return true;\" onMouseout=\"status='';return true;\">hier</a>!</p>");
echo('</body></html>');
die();
}
?>
Verfasst: Sa 25. Sep 2004, 11:38
von Karl
Nach ewiger Sucherei hab ich den Fehler: Es lag *nicht* an Black Widows Privacy Check Modul.
Offensichtlich *kann* folgendes passieren:
Wenn man einer Gruppe für eine Kategorie das Frontend Zugriffsrecht erteilt, später aber wieder wegnimmt, so wird dies zwar in der Contenido Benutzerverwaltung richtig angezeigt (kein Häkchen), aber in der Tabelle "rights" bleibt das Recht stehen, weshalb das Privacy Check Modul den Zugriff weiterhin gewährt (da es ja direkt in dieser Tabelle nachschaut).
Komisch ist nur:
- - Warum zeigt die Contenido Benutzerverwaltung kein Häkchen? Schaut sie nicht in der gleichen Tabelle nach?
- Seitdem ich das Recht in der Tabelle manuell gelöscht habe, kann ich es innerhalb Contenidos wieder ein- und ausschalten und alles funzt normal.
Also weiß ich nicht wie der Fehler entstanden ist, und sowas wurmt mich extrem!
Weiß jemand von euch etwas zu diesem Problem?
Verfasst: Fr 12. Nov 2004, 03:34
von ch.schulze
warum zeigt er mir nur die seiten an, wenn der angemeldete User Admin Rechte hat?