Kategorie schützen und User im Frontend

Gesperrt
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Kategorie schützen und User im Frontend

Beitrag von PC_mobil »

Hallo,
ich habe 2 Installationen von Contenido laufen.

In einer (frisch) habe ich links die normale Navigation. Habe dort für das Frontend einen Testuser (aktiv). Wenn ich nun eine Kategorie schütze, wird diese ausgeblendet und wenn sich der user über das simple login einloggt erst angezeigt. -> einwandfrei

In meiner 2. Installation (Upgrade) habe ich die horiz. Navigation laufen (sh. unten). Wenn ich hier nun einen Kategorie schütze, wird diese aber trotzdem im Frontend angezeigt, klicke ich sie nun an, komme ich zu einem login-from (ähnlich dem zum einloggen im frontend) bei dem ich mich mit meinem frontend-user nicht anmelden kann. als admin kann ich mich hier zwar anmelden, bekomme aber dann auch nur wieder meine allgemeine startseite zu sehen.
Die neue gesplitte Naviagtion aus dem Forum habe ich auch schon probiert -> selbes Problem :( und ich brauche diese Möglichkeit mit dem Login und den geschützten Kategorien, habe extra deswegen geupdatet.

Danke schon mal für Tipps.

Gruß PC_mobil

Output

Code: Alles auswählen

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2       = "";
$catStart  = "";
$catPrev   = "";
$sTmpStr   = "";
$db2_sql   = "";
$catIds    = "";
$key       = "";
$val       = "";
$sql       = "";

// ****************************************************************************************************

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;

/*
$eckkla_auf   = '::&nbsp;';
$eckkla_zu    = '';
$eckkla_trenn = '<br>';

$strBEGIN = '';
$strEND   = '';
*/

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart    = "CMS_VALUE[3200]";
$catPrev     = "CMS_VALUE[3201]";
$eckkla_auf      = "CMS_VALUE[3202]";
$eckkla_zu       = "CMS_VALUE[3203]";
$eckkla_trenn    = "CMS_VALUE[3204]";
$strBEGIN    = "CMS_VALUE[3205]";
$strEND      = "CMS_VALUE[3206]";
$cfg_chkchildid = "CMS_VALUE[3207]";
$cfg_css_link   = "CMS_VALUE[3208]";
$cfg_css_linkhl = "CMS_VALUE[3209]";



// * get catPrec Category and output CatName as [ BackTo ]  nav item


if ($catStart != "" && $catStart != "--kein--" ) {
  $sTmpStr = "";
   if ( $catPrev != "--kein--" ) {
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "   SELECT
                       CAT.idcat AS idcat,
                       name
                    FROM
                       ".$cfg["tab"]["cat"]." AS CAT,
                       ".$cfg["tab"]["cat_lang"]." AS CATLANG
             
                     WHERE   CAT.idcat = ".$catPrev."
                           AND CAT.idcat = CATLANG.idcat
                           AND CATLANG.idlang = '$lang'
                           AND CATLANG.visible = '1'";
                     
        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {

      // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           if ( strlen($sTmpStr) == 0 ) {
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               // und den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           }
           else
           {
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               // den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;         
           }  // end if

        } // end while
   }
                       
   $db2_sql = "   SELECT
            *
         FROM ". $cfg["tab"]["cat"] ." AS A
      
         WHERE
         
           A.parentid = ". $catStart . "

                                                ORDER BY A.preid

                                                 ";

   // Abfrage ausführen
   $db2->query($db2_sql);

     // Ermittlung aller Kategorie IDs der ausgesuchten
     // Navigationsebene und speicherug in einem Array
   while ( $db2->next_record() ) {
             // $catIds[] = $db2->f("idcat");
      $test_1[$db2->f("preid")] = $db2->f("idcat");
   }
   
/*
PREID => IDCAT  ( $test_1 )
Array (
   [0]    => 50

   [26]    => 27
   [27]    => 28
   [28]    => 29
   [29]    => 30
   [30]    => 31
   [31]    => 32
   [32]    => 33
   [33]    => 38
   [34]    => 35
   [35]    => 36
   [36]    => 37
   [38]    => 34
   [50]    => 26
)
------------------------------------
*/

// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
   $ires        = $test_1[$lpre];   
   $test_3[]    = $test_1[$lpre];   
   $lpre        = $ires;
}


// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------

  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {

    // die einzelnen IDs durchgegen
    foreach($catIds as $key=>$val) {

       
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $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'";

        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
       
   if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
   {
           // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
              if ( strlen($sTmpStr) == 0 ) {
                     // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
                     // und den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
              }
              else
              {
                     // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
                     // den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;         
              }  // end if
   }
   else
   {
           // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
              if ( strlen($sTmpStr) == 0 ) {
                     // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
                     // und den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
              }
              else
              {
                     // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
                     // den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;         
              }  // end if
   }
   


        } // end while
   
    }  // end foreach

    // END Zeichen $strEND anfügen
    $sTmpStr = $sTmpStr . $strEND;

    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo $sTmpStr;
  } // end if (is_array)


}


if ( $sn_navmod != "multiuse" ) {
$sn_navmod = "multiuse";


function sn_check_if_child ( $l_idcat, $l_paridcat )
{
   $bResult = false;
   $l_int   = $l_idcat;

   while ( $l_int != 0 && $l_int != $l_paridcat )
   {
      $l_int = get_parentid_from_idcat ( $l_int );

      if ( $l_int == $l_paridcat )
      {
         $bResult = true;
      } // end if
   } // end while
   
   return $bResult;
} // check_if_child

function get_parentid_from_idcat ( $l_idcat )
{
   $ldb = new DB_Contenido;
   $lsql= "SELECT *
      FROM    ".$cfg["tab"]["cat"]." AS CAT,
                    ".$cfg["tab"]["cat_lang"]." AS CATLANG
             
                WHERE   CAT.idcat = ".$l_idcat."
                        AND CAT.idcat = CATLANG.idcat
                        AND CATLANG.idlang = '$lang'
                        AND CATLANG.visible = '1'";

   $ldb->query($lsql);

   while ( $ldb->next_record() )
   {
      $l_parid = $ldb->f("parentid");
   }

   return $l_parid;

} // end function get_parentid_from_idcat

} // end MULTIUSE Funktions
?>
Dinkel
Beiträge: 565
Registriert: Di 22. Mär 2005, 14:52
Kontaktdaten:

Beitrag von Dinkel »

versuch mal das Modul Hilfsnavigation aus der 4.6.4. So hab ich es auf einer Seite laufen (Hauptnavigation und hilfsnavigation) und so ist es auch - wenn ich mich nicht täusche - in der Standard-Beispielinstallation von der 4.6.4 drin.
selbstentwickelte Module:
Downloads und Infos zu den Modulen: gibt es hier.
Modul: Forum | Version 0.9 | getestet: 4.6.24 MR, 4.8.11, 4.8.11 AMR
Modul: Galleriffic | Version: 0.3.4 BETA | getestet: 4.8.11, 4.8.11 AMR, 4.8.12, 4.8.12 AMR
Modul: Metadata | Version: 2.0 | getestet: 4.9.7, 4.9.7 AMR
Modul: Slider Gallery | Version: 1.0 | getestet: 4.9.12 AMR
Modul: Up- & Download | Version: 4.1 | getestet: 4.9.12 AMR
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Beitrag von PC_mobil »

Hallo,

die Hilfsnavi brauche ich auf meiner Seite nicht, wäre z.B. für's Impressum o.ä. . Und die Navi-quer ist quasi mein Ersatz für die Hauptnavi, die ist ja leider im Normalfall senkrecht.
rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist »

ich glaube die css klasse für die standardhauptnavi heißt navi oder so wenn du da ein float:left; einfügst dann ist die auch quer


greets
greets
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Das Modul müsste stärker umgestaltet werden, das prüft überhaupt nicht, welche Rechte bestehen oder ob die Kategorie geschützt ist. Sehr viel Arbeit.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
PC_mobil
Beiträge: 28
Registriert: So 27. Nov 2005, 21:55
Kontaktdaten:

Beitrag von PC_mobil »

Hi,

habe das System auf dem die neue Navi laufen soll, geupgradet, d.h. die Module wurden nicht erneuert. Habe die Hauptnavi und das Login ja aus meiner 2. 4.6.2 in meine 4.6.4 Navi kopiert. Hab's jetzt mit der Hauptnavi versucht wollen (wollte sehen ob's quer ginge quer), ging aber leider auch nicht. Geschützte Bereiche blieben verschwunden.
Könnte mir jmd. bitte einmal die Navi und das Login aus der 4.6.4 Standartinstall posten. Danke!!!
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Die Hauptnavigation V4.6.x findest Du unter Module - da hat sich aber seit V4.6. nix geändert.

Sofern ein Login möglich ist (und da reicht ebenfalls das Modul aus V4.6.2), hast Du alles, was Du brauchst.

Du musst natürlich den Frontend-Account über Frontend User-Gruppen noch für die Kategorien berechtigen. Hast Du das schon gemacht?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

ähnliches problem

Beitrag von #ayshe »

Hallo,

bei meiner 4.6.4-Installation (Upgrade von 4.4.4) ist es ähnlich.
Ich habe eine Kategorie geschützt und Frontenduser sowie -gruppe mit Zugriffsrecht darauf eingerichtet.

Das Login ist ebenfalls eingerichtet und funktioniert.

Wenn mein Test-Frontenduser nicht eingeloggt ist, sieht man aber trotzdem die geschützte Kategorie. Was habe ich falsch gemacht oder übersehen?

Gruß,
Ayshe
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Allgemein muss das Navigations-Modul überprüfen, ob die Berechtigung vorliegt. Siehe Code für Hauptnavigations-Modul aus V4.6.x als Beispiel.

Wenn Du noch ein unangepasstes Navigations-Modul aus V4.4.x verwendest, wird nichts überprüft...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe »

Yep, das war's. Hab das neue Modul drin und schon klappts. :-)
Gesperrt