Nach Frontend-Login direkt zur gewünschten Seite

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

Hallo tinof,

danke, funktioniert jetzt mit Möglichkeit 2.

Ich hatte aber unterhalb des geschützten Bereichs eine weitere ungeschützte Kategorie mit dem Anmeldenamen, trotzdem kein Sprung dorthin!

so ists aber okay für mich.

PS Gehört nicht hierhin, trotzdem 2 Zeilen: der geschützte Navipunkt wird immer angezeigt auch wenn ich nicht eingeloggt bin. Ist das normal? Ich dachte er wird nur quasi eingeblendet wenn eingeloggt - ich nutzte vpNavigation! Hast du einen Tipp?
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

Hallo,

komisch, mit einer Kategorie == Benutzernamen geht's bei mir - deshalb habe ich das ja überhaupt angepasst (n Außendienstler, die je einen eigenen geschützten Bereich haben, in den sie das Login sofort schickt).

Die vpNavigation kenne ich leider nicht (habe erst zu Beginn des Jahres mit Contenido begonnen) - vielleicht kann jemand anderes helfen ?

Du hast recht, so lange man nicht eingeloggt ist, sollte man keine geschützten Kategorien oder ihre unterkategorien sehen, in der Standardnavi ist das so (erwartungsgemäß).

Grüße
Tino
Für die Freizeit : www.hobbybrauer.de
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

hallo tinof,

jetzt bräuchte ich doch die weiterleitung zum Benutzername==Kategorie. Ich habe jetzt nur das hier:
$weiter = 'idcatart=9999';

Hiermit $weiter = getstartcat($auth->auth["uname"]);
bleibts gerade dort wo ich bin.

Hast du noch eine Idee?

Gruß
stefkey
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

Hi,

spontan fällt mir noch ein : Groß/Kleinschreibung ? Sind Kategoriename und Nutzername wirklich gleich ?

Ansonsten, richte mir doch mal einen Backend - Zugang ein und schicke mir 'ne PM - ich schau's mir mal an. Es kann durchaus sein, dass auch mein Script noch so seine Macken hat.

Grüße
Tino
Für die Freizeit : www.hobbybrauer.de
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

Hab den Code des Moduls noch geringfügig geändert, weil manchmal die Datenbankabfrage keine korrekten Ergebnisse lieferte.

Änderungen in meinem Post mit dem Modulcode eingearbeitet.
Für die Freizeit : www.hobbybrauer.de
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von 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
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

@HerrB JA! Danke !

Und jetzt die sicher ganz dumme Frage : Wie bekomme ich eine solchen Link direkt zu einem Beitrag ??

Beí <EDIT> den p=12345 Parameter anschauen ? Oder noch einfacher ?

Nochmal Danke!
Tino
Für die Freizeit : www.hobbybrauer.de
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Zum einen kannst Du den Link nehmen, der unterhalb des Contenido-Logos die Überschrift darstellt (Dein Topic) oder Du nimmst den Link, der sich hinter dem kleinen Blatt links neben "Posted" bzw. "Gepostet" bei jedem Beitrag findet.

Ich verwende englisch als Spracheinstellung, falls die Beziechnung nicht ganz stimm: neben dem Namen des Autors steht bei jedem Beitrag ein kleines, weißes Blatt (neben dem Datum des Beitrags).

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
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

Danke, alles klar !

Und wieder 'was gelernt.
Für die Freizeit : www.hobbybrauer.de
ckemper
Beiträge: 13
Registriert: Mi 13. Sep 2006, 21:47
Kontaktdaten:

Weiterleitung statt an Benutzername an Frontend-Gruppe?

Beitrag von ckemper »

Hallo zusammen,

ich hab Herrn Faeustels Modul mal bei mir getestet, läuft wunderbar.
Nun die Spezialfrage: Wie konfiguriere ich die Variable $weiter so um,
dass statt des Benutzernamens die Frontenduser-Gruppe zur Weiterleitung herangezogen wird?

Ich führe verschiedene Frontenduser-Gruppen, und je nach Gruppe soll eine eigene Seite nach Login automatisch aufgerufen werden.

Bsp. für Vertriebspartner sollte eine Kategorie "Vertriebspartner" sein mit einem Startartikel der die Vertriebspartner im internen Vertriebsbereich willkommen heißt.

Für Kunden sollte eine Kategorie "Kunden" sein mit einem Startartikel der den Benutzer im Kundenbereich willkommen heißt.

Ich bin leider mit den verwendeten Variablen in Contenido noch nicht ganz fit, denke aber das die Änderung ein Klacks ist.

Danke schonmal :D
Carsten
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

Hallo tinof,

ich habe das Login-Modul auf einer einzelnen Seite im "Main-Content" eingebaut. Einloggen mit Weiterleitung auf die geschützte Kategorie funktioniert wunderbar! Jedoch der Link für Logout hat eine falsche idcatart.

Wenn ich mich nun nicht auslogge und auf eine andere Kategorie gehe und dann wieder zurück zur Kategorie mit dem Login-Modul steht da statt "login" jetzt "Logout" und an dieser Stelle mit richtiger idcatart.

Nur auf der Geschützten Kategorie ist der Link falsch.

Kannst du dich reindenken und hast eine Idee was da falsch ist?
Oder hat jemand anderes eine Idee?


Grüße,
stefkey
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

@ckemper:
Sorry, hab den Post erst jetzt gelesen!

@stefkey, @ckemper
Anfragen sind registriert, ich komme nur nicht sofort dazu mir das anzuschauen, gebt mir bitte 2-3 Tage.
Für die Freizeit : www.hobbybrauer.de
tinof
Beiträge: 197
Registriert: Mi 24. Jan 2007, 20:38
Wohnort: Kirchberg / Sa.
Kontaktdaten:

Beitrag von tinof »

So, ich war fleissig :lol:
Hier eine neue Version des Moduls mit den Änderungen:
- <Logout> funktioniert auch aus geschuetzten Seiten heraus (@stefkey)
- Weiterleitung wahlweise über Usernamen oder den Namen der ersten Gruppe zu der der User gehört (alphabetisch aufsteigend sortierte Gruppennamen)

Hinweis zur Weiterleitung: man kann den Modus jetzt in der Artikelkonfiguration einstellen. Das Problem dabei ist, man muß alle Kategorien und Artikel anfassen, in denen das Loginodul auftaucht und die eine eigene Konfiguration haben. Wer das nicht möchte, ändert (global) im output folgendes :

Code: Alles auswählen

$linkmode = "CMS_VALUE[1]";
in

Code: Alles auswählen

$linkmode = 0;  -- fuer Weiterleitung ueber Usernamen
--oder
$linkmode = 1;  -- fuer Weiterleitung ueber Gruppennamen
und ignoriert die Konfigurationsmöglichkeit beim Artikel

und hier ist es:

Code: Alles auswählen

Einfaches Login-Modul
Erweitert um automatische Weiterleitung zu 'persönlichem' geschützten Bereich
Author: Andreas Lindner / Tino Fäustel
Version:2.0
Aenderungen : 05.09.07 : Weiterleitung auch ueber den (ersten) Namen der (ersten) Gruppe, zu der der User gehoert.
INPUT:

Code: Alles auswählen

?><?php
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Login mit Weiterleitung 
* Author(s)   :     Tino Faeustel, www.faeustel.de
* Created     :     05.09.2007

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

$cms_mode = "CMS_VALUE[1]";

function getSel($value) {
	global $cms_mode;
	if ($value == $cms_mode) {
		return 'selected="selected"';
	} else {
		return "";
	}
   
}

echo '<table cellpadding="0" cellspacing="0" border="0">';
echo '<tr><td>Modus:</td><td class="text_medium" style="padding:5px">'; 
echo '<select name="CMS_VAR[1]" style="width:300px">';
echo '<option value="0" '. getSel(0) .'>&nbsp;Weiterleitung &uuml;ber Usernamen.</option>';
echo '<option value="1" '. getSel(1) .'>&nbsp;Weiterleitung &uuml;ber Gruppennamen.</option>';
echo '</select>&nbsp;<input type="image" src="images/submit.gif">';
echo '</td></tr>';
echo '</table>';

?><?php 
OUTPUT:

Code: Alles auswählen

<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname  :      Loginbox 
* Author(s)   :     Andreas Lindner (erweitert v. Tino Faeustel) 
* Copyright   :     Contenido - four for business, Andreas Lindner 
* Created     :     05.08.2005 
************************************************/ 

$linkmode = "CMS_VALUE[1]";

#Includes 
cInclude('classes', 'class.template.php'); 

global $loginflag; 

// merken (s.u.) 
if ( !$sess->is_registered('loginflag' )) $sess->register('loginflag'); 


/** 
* Preferences :  Im geschützten Bereich gibt es für jeden Frontendbenutzer eine eigene Kategorie 
*                die mit dem Benutzernamen bezeichnet wird. 
*                Das Loginformular ruft automatisch den Startartikel dieser Kategorie auf, unabhängig 
*                davon von welcher Seite aus es aufgerufen wird. 
*/ 

// Weiterleitung ueber Gruppe : Gruppenname ermitteln
function getfirstgroup($uid) {
	global $cfg, $client;

	$db = new DB_Contenido;
	
	$sql="SELECT groupname FROM " . 
               $cfg['tab']['frontendgroups'] . " fg, " .
               $cfg['tab']['frontendgroupmembers'] . " gm  
	      WHERE fg.idfrontendgroup = gm.idfrontendgroup AND 
               gm.idfrontenduser = ". $uid . " AND fg.idclient = " .$client .
  	      " ORDER BY groupname LIMIT 0,1";

	$db->query($sql);
	if ($db->next_record()) {
		return $db->f('groupname');
	} else {
		return "";
	}
}
	


// ermitteln einer Kategorie zu einem Benutzernamen 
function getstartcat($username){ 

   global $cfg, $lang, $idcatart; 

   $db = new DB_Contenido; 

   $sql = "SELECT idcat FROM " . $cfg['tab']['cat_lang'] . " cat_lang " . 
          "WHERE cat_lang.name = '". $username . "' AND cat_lang.idlang = " .$lang;
          
   $db->query($sql); 
   if ($db->next_record()) { 
      return "idcat=" . $db->f('idcat'); 
   } else { 
      return ""; 
   } 
} 

// fuer Ausgabe 
if ( !is_object($tpl) ) { 
    $tpl = new Template; 
} 
$tpl->reset(); 

if ($auth->auth["uid"] == "nobody"){ 
// nicht angemeldet -> 'normal' 
   $template = 'login.html'; 

   $tpl->set('s', 'FORM_ACTION', 'front_content.php?idcatart='.$idcatart);    
   $tpl->set('s', 'USERNAME', mi18n("Username"));    
   $tpl->set('s', 'PASSWORD', mi18n("Passwort"));    
   $tpl->set('s', 'GO', mi18n("Go"));    
   $tpl->set('s', 'LOGIN', mi18n("Login"));    

   $tpl->generate('templates/'.$template); 
    
   // Login - Flag Init / Reset 
   $loginflag=0; 

} else { 
   if (($loginflag == 0) ){ 
   // nur beim ersten mal 
      $loginflag = 1; // wegen 'erstes Mal' 

      if ($linkmode == 0) {	
	// ueber username
          $weiter = getstartcat($auth->auth["uname"]);  // das ist die Zielcat oder 'idcatart=162';
      } else {
          // ueber gruppe
          $weiter = getstartcat(getfirstgroup($auth->auth["uid"]));
      }	
      if (($weiter != "")  AND ( ! $edit) ) { // nur wenn passende Kategorie vorhanden und NICHT im Backend 
         // dann sofort Weiterleitung 
		echo '<meta http-equiv="refresh" content="0; URL=' . $sess->url("front_content.php?" . $weiter)  .'">';
      } 
   } else { 
   // sonst wie immer 
      $template = 'logout.html'; 

      $tpl->set('s', 'CURRENT_USERNAME', mi18n("Sie sind angemeldet als"));    
      $tpl->set('s', 'USERNAME', $auth->auth["uname"]);    
//      $tpl->set('s', 'HREF', 'front_content.php?idcatart='.$idcatart.'&logout=yes');    
      $tpl->set('s', 'HREF', 'front_content.php?logout=yes');    

      $tpl->set('s', 'LOGOUT', mi18n("Logout"));    
      $tpl->generate('templates/'.$template); 
   } 
} 
?> 

Für die Freizeit : www.hobbybrauer.de
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey »

tinof hat geschrieben: ...
...
...
Hinweis :
Wenn man den Nutzernamen lieber als Kategorie - Alias hinterlegen möchte (und dann die Kategorie frei benennen), ist folgende Änderung in function getstartcat() nötig :

Code: Alles auswählen

   "WHERE cat_lang.name = '". $username . "' AND cat_lang.idlang 
ersetzen durch

Code: Alles auswählen

   "WHERE cat_lang.urlname = '". $username . "' AND cat_lang.idlang 
...
...
...

Mit der neuen Version war das natürlich weg und mein die Weiterleitung funktionierte nicht mehr!

Aber ich habs gefunden nachdem ich Buchstabe für Buchstabe des alten mit dem neuen Code verglichen habe!
Ich hab leider keine Ahnung sonst hätte ich direkt gewusst was Sache ist.

Danke und viele Grüße
stefkey
ckemper
Beiträge: 13
Registriert: Mi 13. Sep 2006, 21:47
Kontaktdaten:

Login-Erweiterung von tinof

Beitrag von ckemper »

Hallo,

erst mal besten Dank für die Erweiterung des Loginmoduls von tinof. Das klappt soweit ganz gut. Ich möchte mit meinem Login-Modul aber noch einen Schritt weitergehen.

Folgendes Szenario:
Ich habe mehrere Gruppen (Vertriebspartner, Interessenten, Kunden).
Jeder einzelnen Gruppe will ich eine eigene Startseite im geschlossenen Bereich zuordnen, auf die das System beim Login eines Benutzers der jeweiligen Gruppe springt. Und jedesmal, wenn der eingeloggte Benutzer den Menüpunkt "geschlossener Bereich" anklickt, muß er wieder auf seine Gruppenstartseite zurückkommen.

Derzeit löse ich das Problem wie folgt:
Im geschlossenen Bereich gibt es eine Startseite mit einem Text, dass der Benutzer bitte seine Zugangsdaten links im Menü eintragen soll.
Gleichzeitig enthält der Artikel das Modul "Internbereich Weiterleitung" mit folgendem Inhalt:

Code: Alles auswählen

<?php 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname  :      Internbereichs-Weiterleitung 
* Author(s)   :     Andreas Lindner, Modifiziert von CK
* Copyright   :     Contenido - four for business, Andreas Lindner 
* Created     :     29.08.2007 
************************************************/ 

if ($auth->auth["uid"] != "nobody") { 
   cInclude("classes", "class.frontend.groups.php"); 

   $FEGroupMemberCollection = new FrontendGroupMemberCollection; 
   $FEGroupMemberCollection->setWhere("idfrontenduser", $auth->auth["uid"]); 
   $FEGroupMemberCollection->setWhere("idfrontendgroup", 2); 
   $FEGroupMemberCollection->query(); 
   if ($FEGroupMemberCollection->next()) 
   { 
      $weiter =    'idcatart=188';  // das ist die Zielcat oder 'idcatart=162';
   } 

}

if ($auth->auth["uid"] != "nobody") { 
   cInclude("classes", "class.frontend.groups.php"); 

   $FEGroupMemberCollection = new FrontendGroupMemberCollection; 
   $FEGroupMemberCollection->setWhere("idfrontenduser", $auth->auth["uid"]); 
   $FEGroupMemberCollection->setWhere("idfrontendgroup", 3); 
   $FEGroupMemberCollection->query(); 
   if ($FEGroupMemberCollection->next()) 
   { 
      $weiter =    'idcatart=187';  // das ist die Zielcat oder 'idcatart=162';
   } 
}

      if (($weiter != "")  AND ( ! $edit) ) { // nur wenn passende Kategorie vorhanden und NICHT im Backend 
         // dann sofort Weiterleitung 
                   echo '<meta http-equiv="refresh" content="0; URL=' . $sess->url("front_content.php?" . $weiter)  .'">'; 
      } 
   else { 

   echo '<meta http-equiv="refresh" content="0; URL=' . $sess->url("front_content.php?idcatart=189")  .'">';

   } 

?> 
Meine Frage dazu:
Ich linke per Login-Modul auf diese Startseite des geschlossenen Bereichs, der dann mit obigem Code überprüft ob für den Benutzer eine der Gruppen hinterlegt ist.
Ist dieser Code so brauchbar oder kann man das eleganter lösen (z. B. im Login-Modul von tinof für die Gruppen eine Startseite übers Backend steuern).
Die jeweilige Weiterleitung kostet obendrein jedesmal Zeit und unser Webserver bei 1&1 ist nicht immer der schnellste.

Für Tips und Anregungen bin ich dankbar.

Gruß
Carsten
Gesperrt