So, ist jetzt noch nicht das ALLERFEINSTE, aber ich denke, das überbrückt das Problem ganz gut ...
Zur Anwendung:
Erstellt einen Container in Eurem Layout.
Dieser muss sich unbedingt im <head> befinden!!! Auf allen Seiten, die Ihr schützen wollt, packt ihr dann das Modul rein. Die Kategorie braucht mit diesem Modul
nicht mehr durch Contenido geschützt zu werden!!!
Es prüft, ob ein Benutzer angemeldet ist und wenn, ob er ein admin des aktuellen Klienten oder ein sysadmin ist, oder das Recht Frontend-Zugriff für alle Kategorien oder aber zumindest für die aktuelle Kategorie hat. Außerdem werden ebenfalls alle Gruppen, in denen sich der Benutzer befindet, mitüberprüft!! Somit bleibt die Funktionalität der Gruppen auch hiermit weiterhin erhalten!! Sollte mindestens eine Gruppe das entsprechende Recht besitzen, ist der Zugang gewährt!
Hat der Benutzer kein Recht, oder ist kein Benutzer angemeldet, wird die GESAMTE weitere Verarbeitung abgebrochen! Dies ist leider nötig, damit ein unauthorisierter User auch den HTML-Quelltext nicht zu sehen bekommt, der ansonsten trotzdem generiert würde! Deswegen muss das Modul auch im <head> stehen!!
Die Werte der Variablen zu Beginn des Codes müsst/könnt Ihr ggf. anpassen! Überprüft auf jeden Fall die IDs der area "str" und der action "front_allow"!!
Hier der Quellcode:
Output:
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 = 3000; //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/>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();
}
?>
Ich hoffe, ich kann Euch damit etwas helfen!
Ich wäre froh über ein Feedback ... insbesondere, wenn jemandem eine bessere Lösung eingefallen ist, mit der man das die() verhindern kann!
Gruß,
Black Widow