Seite 1 von 2

Frontend User / LogIn Problem

Verfasst: Do 3. Nov 2005, 18:59
von raum-acht
ich setze 4.6.2 ein und habe folgendes problem:

wenn ich einen frontend-benutzer anlege, anschliessend eine gruppe anlege in der der user alle rechte hat die geschütze kategorie zu sehen - kann dieser sich zwar einloggen aber das menu bzw. die kategorien werden nicht sichtbar.
anders ist das beim admin und beim sysadmin - diese bekommen die geschützen bereiche zu sehen.

code für das modul des login

Code: Alles auswählen

<table cellpadding="8" cellspacing="0" class="contentbox-02">
  <tr> <?php echo "<td class=\"contentbox-headline\">CMS_HEAD[1]</td><td class=\"contentbox-headline\" align=right>"; ?>
    <?php if (!$contenido) { ?>
    <form style='margin:0' name='drucken' method='POST' target='_blank' action='print.php'>
      <input name='print_boxhead' type='hidden' id='print_boxhead' value='CMS_HEAD[1]'>
      <input name='print_head' type='hidden' id='print_head' value='CMS_HEAD[2]'>
      <input name='print_html' type='hidden' id='print_html' value='CMS_HTML[3]'>
      <SCRIPT TYPE="text/javascript">
<!--
var sr = new submitroll("upload/global-imgs/print-01.gif","upload/global-imgs/print-02.gif","mysubmit");
sr.write();
//-->
</SCRIPT>
      <NOSCRIPT>
      <INPUT TYPE=SUBMIT VALUE="Go!">
      </NOSCRIPT>
    </FORM>
    <?php } else { ?>
    <?php } ?>
    </td>
  </tr>
  <tr>
    <td colspan="2"><table cellpadding="0" cellspacing="0" class="contentbox-02-01">
        <tr> <?php echo "<td><img src=\"CMS_IMG[2]\" alt=\"\" border=\"0\">CMS_IMGDESCR[2]</td>"; ?> </tr>
        <tr>
          <td class="spacer"><img src="upload/global-imgs/clearpixel.gif" alt="" width="1" height="1" border="0"></td>
        </tr>
        <tr> <?php echo "<td class=\"content-txt\"><p class=\"content-headline\">CMS_HEAD[2]</p>"; ?>
          <?php if ($auth->auth["uid"] == "nobody") { ?>
          <form action="front_content.php?idcatart=<?php echo $idcatart; ?>" method="post" name="login">
            <input type="hidden" name="login" value="Anmelden">
            <p><span class="content-txt">Benutzername</span><br>
              <input type="input" name="username" value="" class="form">
            </p>
            <p><span class="content-txt">Passwort</span><br>
              <input type="password" name="password" value="" class="form">
            </p>
            <p><a href="javascript:document.login.submit()" class="link" onfocus="blur()">anmelden</a></p>
            <p>Um sich in den Mitglieder Bereich einloggen zu können benutzen Sie bitte die Ihnen bekannten Zugangsdaten.</p></form>
          <?php } else { ?>
          <p><span class="content-txt">Sie sind angemeldet als: <?php echo $auth->auth["uname"]; ?> </span></p>
          <form action="front_content.php?idcatart=<?php echo $idcatart; ?>" method="post" name="logout">
            <input type="hidden" name="logout" value="Abmelden">
            <a href="javascript:document.logout.submit()" class="link" onfocus="blur()">abmelden</a>
          </form>
          <?php } ?>
        </tr>
      </table>
    </td>
  </tr>
</table>
code für das modul der navigation

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Navigation 1.1
* Author : Jan Lengowski
* Copyright : Contenido - four for business
* Created : 15-05-2003
* Modified : 26-05-2003
************************************************/

if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}


/**
* Check if a category is child
* of another category
*
* @return boolean true/false
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
if (!function_exists("catIsChildOf"))
{
function catIsChildOf($id, $idparent) {

global $cfg, $client, $lang;

$db = new DB_Contenido;

$parent = $id;

while ( $parent != 0 ) {

$sql = "SELECT
a.parentid
FROM
".$cfg["tab"]["cat"]." AS a,
".$cfg["tab"]["cat_lang"]." AS b
WHERE
a.idclient = '".$client."' AND
b.idlang = '".$lang."' AND
a.idcat = b.idcat AND
a.idcat = '".$parent."'";

$db->query($sql);
$db->next_record();

$parent = $db->f("parentid");

if ($parent == $idparent) {
return true;
}

}

return false;

}
}

if ( catIsChildOf($idcat, "CMS_VALUE[0]") ) {
$sel_idcat = $idcat;
} else {
$sel_idcat = "CMS_VALUE[0]";
}

/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');

/**
* Array storing alle the
* navigation data
*/
$navitems = array();


/* Template Instance */
$tpl = new Template;

/**
* Recursive function for creating
* the navigation array
* @param Int $idcat Category id
*/
function nav($idcat) {

global $navitems, $client, $lang, $cfg, $perm ;

$db = new DB_Contenido;
$db2 = new DB_Contenido;

$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";

$db->query($sql);
$db->next_record();

$parentid = $db->f("parentid");

if ( $parentid == 0 ) {

if ( $idcat != "CMS_VALUE[0]" ){

$navitems = array();

$sql = "SELECT
A.idcat,
C.name,
C.public
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = 'CMS_VALUE[0]'
ORDER
BY A.idtree";

$db->query($sql);

while ($db->next_record()) {

/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";

$db2->query($sql);
$db2->next_record();

$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';

if ($db->f("public") == 1 || $perm->have_perm_area_action_item("str","front_allow", $db->f("idcat")) || $perm->have_perm())
{
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
}

}

return true;
}

$sql = "SELECT
A.idcat,
C.name,
C.public
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$parentid'
ORDER BY
A.idtree";

$db->query($sql);

while ($db->next_record()) {

/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";

$db2->query($sql);
$db2->next_record();

$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';

if ($db->f("public") == 1 || $perm->have_perm_area_action_item("str","front_allow", $db->f("idcat")) || $perm->have_perm())
{
$tmp_nav[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
}

$tmp_nav[$idcat]["sub"] = $navitems;
$navitems = $tmp_nav;

/* Function call */
nav($parentid);

} // end function

$sql = "SELECT
A.idcat,
C.name,
C.public
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
B.idclient = '$client' AND
C.idlang = '$lang' AND
C.visible = '1' AND
B.parentid = '$sel_idcat'
ORDER BY
A.idtree";

$db->query($sql);

while ( $db->next_record() ) {

/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";

$db2->query($sql);
$db2->next_record();

$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';

if ($db->f("public") == 1 || $perm->have_perm_area_action_item("str","front_allow", $db->f("idcat")) || $perm->have_perm())
{
$navitems[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
}
/* Create Navigation Array */
nav($sel_idcat);

/* Start Output buffer */
ob_start();
?>

<table cellpadding="8" cellspacing="0" class="contentbox-01">
  <tr> 
    <td class="contentbox-headline">Mitglieder Bereich</td>
  </tr>
  <tr> 
    <td><table cellpadding="0" cellspacing="0" class="contentbox-01-01">

<?php
$spacer = 0;
foreach ($navitems as $key => $data) {

/* 1. 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 ($spacer == 1) {
		echo "<tr><td class=hr><img src=upload/global-imgs/clearpixel.gif width=1 height=1 border=0></td></tr>";
}
	
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/navfirst_on.html');
} else {
$tpl->generate('templates/navfirst_off.html');
}
$spacer = 1;

if (is_array($data['sub'])) {

foreach ($data['sub'] as $key => $data) {

/* 2. 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 == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/navsecond_on.html');
} else {
$tpl->generate('templates/navsecond_off.html');
}

if (is_array($data['sub'])) {

foreach ($data['sub'] as $key => $data) {

/* 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 == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}

} // end foreach

} // end if

} // end foreach

} // end if

} // end foreach

echo '</table></td></tr></table>';

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
ob_end_clean();

/* Output buffer-contents */
echo $html;

?>
vielen dank vorab für lösungsvorschläge!
lg - philipp

Verfasst: Do 3. Nov 2005, 22:57
von HerrB
Zum einen denke ich, dass Du ein Modul nun für ältere Contenido-Versionen einsetzt. Zum anderen gehe ich davon aus, dass das so nicht mehr geht, da in V4.6 Frontendnutzer und Backendnutzer getrennt wurden (Gott sei Dank).

Generell musst Du a) die Kategorie schützen und b) bei den Frontend-Gruppen auf der Seite "Category" (ja, die gibts da) die jeweilige Gruppe für die Kategorie berechtigen.

Wie ein Modul aussehen kann, welches diese Rechte beachtet, kannst Du dem Beispielmandanten entnehmen (z.B. mal die WAMP lokal installieren und reingucken). Das Hauptnavigationsmodul beachtet die individuellen Berechtigungen.

Gruß
HerrB

Verfasst: Fr 4. Nov 2005, 15:10
von raum-acht
hallo herr b.

vielen dank!
die category hatte ich so eingestellt wie von ihnen beschrieben.

eine bitte - könnten sie den code hier posten - ich denke das wäre auch hilfreich für andere.

vielen dank vorab!

gruss - philipp

Verfasst: Fr 4. Nov 2005, 19:48
von HerrB
Wenn ich es vergesse, sende man mir bitte eine Erinnerung per PM (das ist die Taste "PM" unter dieser Antwort... :wink: ).

Gruß
HerrB

Verfasst: Fr 4. Nov 2005, 19:54
von raum-acht
ab wann soll die erinnerung erfolgen?

gruss - philipp

Verfasst: Fr 4. Nov 2005, 19:58
von HerrB
Spätestens Sonntag früh... (habe hier gerade keine V4.6.2) ... das nenne ich Wiedervorlage... danke :wink:

Gruß
HerrB

Verfasst: So 6. Nov 2005, 02:52
von HerrB

Verfasst: Mo 7. Nov 2005, 14:07
von raum-acht
vielen dank herrB,

jetzt funktioniert der login!

vielen dank...

grüsse - philipp

Verfasst: Di 8. Nov 2005, 15:47
von raum-acht
jetzt hab ich doch noch eine frage:

wenn ich einen falschen user/pass oder garkeinen eintrage und mich dennoch anmelde werde ich auf das cms login umgeleitet.

kann ich das irgendwie verhindern bzw. einen "alert" anzeigen?

vielen dank vorab - philipp

Verfasst: Di 8. Nov 2005, 18:19
von HerrB
Das ist nicht das cms-Login, sondern die front_crcloginform.inc.php im Mandanten-Verzeichnis. Eine Anmeldung darüber dürfte vermutlich nach wie vor nicht funktionieren, Du kannst daher den Code darin komplett ersetzen und z.B. auf Deine Login-Seite umleiten:

Code: Alles auswählen

<?php
header("Status: 301 Moved Permanently"); // wichtig für google
if ($_REQUEST["logout"] != "") {
   header("Location: http://<www.domain.tld>/<ggf. Pfad>/front_content.php?idart=36&idcat=26&logout=true");
} else {
   header("Location: http://<www.domain.tld>/<ggf. Pfad>/front_content.php?idart=36&idcat=26&loginerror=1");
}
exit; 
?>
Die Werte für idcat und idart musst Du natürlich entsprechend anpassen (kannst auch Alternativ idcatart verwenden). Das mit dem loginerror ist nicht so wichtig, das könnte man z.B. im Login-Modul abfragen und eine Meldung anzeigen ("Passwort falsch, nochmal versuchen").

Gruß
HerrB

Verfasst: Di 8. Nov 2005, 23:12
von vize
Hallo

oben steht:
... und b) bei den Frontend-Gruppen auf der Seite "Category" (ja, die gibts da) die jeweilige Gruppe für die Kategorie berechtigen.
aber wo finde die Frontend Gruppen auf der Seite Category? bei mir gibt es da keinen punkt mehr

Hab gerade gemerkt das zwar der login im democontent geht aber die seite vertraulich nicht aufrufbar ist.

danke im vorraus

Vize

Verfasst: Mi 9. Nov 2005, 10:55
von raum-acht
hallo HerrB,

funktioniert wunderbar - genau so hab ich es mir vorgestellt!


vielen dank!
grüsse - philipp

Verfasst: Mi 9. Nov 2005, 23:37
von HerrB
aber wo finde die Frontend Gruppen auf der Seite Category? bei mir gibt es da keinen punkt mehr
Umgekehrt: Unter Administration -> Frontend -> Gruppen findest Du, wenn Du eine Gruppe anklickst, rechts ein Submenü Category.

Gruß
HerrB

Verfasst: Do 10. Nov 2005, 10:07
von pit
kannst Du da mal ein screenshot posten? Ich seh da nichts?! (blind)

Gruß Pit

Verfasst: Do 10. Nov 2005, 11:49
von raum-acht
mit welcher cms version arbeitest du?