Frontend Login - gezieltes Sperren

Gesperrt
Karl
Beiträge: 185
Registriert: Fr 28. Nov 2003, 19:07
Kontaktdaten:

Frontend Login - gezieltes Sperren

Beitrag 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
Gruss Karl
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

hast du auch einen link zum modul ? vielleicht kann dir dann eher einer helfen...
*** make your own tools (wishlist :: thx)
Karl
Beiträge: 185
Registriert: Fr 28. Nov 2003, 19:07
Kontaktdaten:

Beitrag 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(); 
} 
?>

Gruss Karl
Karl
Beiträge: 185
Registriert: Fr 28. Nov 2003, 19:07
Kontaktdaten:

Beitrag 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?
Gruss Karl
ch.schulze
Beiträge: 44
Registriert: Mo 25. Aug 2003, 22:41
Kontaktdaten:

Beitrag von ch.schulze »

warum zeigt er mir nur die seiten an, wenn der angemeldete User Admin Rechte hat?
Gesperrt