Seite 1 von 4

Nach Frontend-Login direkt zur gewünschten Seite

Verfasst: Di 27. Feb 2007, 11:25
von jcf
Hallo Zusammen,

ich habe Contenido so eingestellt, dass es beim Klicken auf eine Kategorie, die geschützt ist, direkt auf eine Seite mit Login-Feld weiterleitet. Nun möchte ich aber, dass nach dem Login die gewünschte Kategorie automatisch geöffnet wird. Hat hier jemand erfahrung oder eine Idee?

Danke für eure Hilfe!

jcf

PS: Ich benötige quasi die idcatart der vorherigen Seite. Da ich aber mit dem modrewrite arbeite, weiß ich nicht, wie ich das übergeben kann. Schöner wäre es, wenn ich das irgendwie abfragen könnte. hm...

Verfasst: Mi 28. Feb 2007, 12:29
von emergence
ähm, wie ?

in diesem fall leitet man auf keine kategorie weiter sondern passt die optik hier an -> front_crcloginform.inc.php
dann hat man genau das was du haben willst...

Verfasst: Fr 30. Mär 2007, 20:08
von tinof
Sorry, ich hake hier nochmal nach :

1) Der user kann sich auf irgendeiner beliebigen Seite (Artikel) anmelden.

2) Nach der erfolgten Anmeldung soll er aber dann automatisch immer sofort auf seiner 'Heimatseite' im geschützten Bereich gelangen.
Man müßte eine 'Userspezifische - (geschützte)Startseite' angeben können, die nach Authentifizierung sofort geladen wird.

Das soll im allein Login - Formular gehen ? Hat da vielleicht jemand eine funktionierende Lösung ?

Gibt es vielleicht eine fertige Funktion 'Find_idcatart_ByTitle()' die man eininden kann (man könnte dann ohne Änderungen an der frontenduser - Tabelle eine 'logische' Verknüpfung username->artikel_titel basteln) ?

Danke !
Tino

Verfasst: So 1. Apr 2007, 15:42
von _Marc
Hallo Tino,

ich glaube jcf meinte das etwas anders. Es geht nicht um eine statische User-Heimseite, sondern um die Seite für die grade eine Anmeldung erforderlich ist.

Wie das mit dem crcloginform geht würde mich auch interessieren...

Grüße
_Marc

Verfasst: Mo 2. Apr 2007, 12:21
von HerrB
a) Zunächst die "Startseite" als zusätzliche Eigenschaft für den Frontend User definieren (siehe Frontend User-Plugin, da sieht man grundsätzlich, wie man zusätzliche Felder und Informationen bereitstellen kann - in der gewünschten Form hat das so noch niemand gemacht).

b) In der front_crclogin_form.php Code einbauen, der sich zum angemeldeten Nutzer den festgelegten Startartikel holt und dorthin weiterleitet.

Ich weiß, ich weiß, wie man es ganau machen muss, steht hier nicht. Deswegen einfach mal die Frontend User-Plugins ansehen und die Eigenschaft nachrüsten. Wer soweit ist: Nach dem nächsten Schritt fragen...

Gruß
HerrB

Verfasst: Fr 25. Mai 2007, 10:36
von tinof
Hallo,

also ich habe jetzt meine Idee von oben umgesetzt. Das ist möglicherweise 'von hinten durch die Brust ins Auge', aber sorry, in der Contenido - Useranmeldung über front_content.php (action im Loginformular) bin ich nicht klargekommen. Hier fehlt mir (noch) der Durchblick.

Szenario :
Es gibt eine Kategorie 'Geschützter Bereich'.
Unterhalb dieser Kategorie hat jeder Frontendbenutzer seine persönliche Kategorie auf die nur er Zugriff hat. Diese persönlichen Kategorien habe ich nach den Namen der Frontendbenutzer benannt :
also ver Benutzer "Meier" hat die persönliche (geschützte) Kategorie "Meier" usw.

In meinem konkreten Anwendungsfall war das so möglich und auch eindeutig (es gibt immer genau eine Kategorie "Meier").

Meine Änderungen im Loginformular machen nun Folgendes :
Nach erfolgreicher Anmeldung wird der Benutzer automatisch in 'seinen' Ordner weitergeleitet - unabhängig davon, von welcher Seite er das Login vorgenommen hat.


Zugegeben, ein Szenario mit vielen Randbedingungen, aber vielleicht ist es ja doch nicht uninteressant. Man könnte z.B. statt den User im Kategorienamen auch in den Artikeleigenschaften angeben und dann darüber den Artikel identifizieren usw.

Die Änderungen basieren auf dem Standard - Login - Modul des Demo - Mandanten.

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 
************************************************/ 

#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. 
*/ 

// 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' 

      $weiter =    getstartcat($auth->auth["uname"]);  // 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 { 
   // 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', 'LOGOUT', mi18n("Logout"));    
      $tpl->generate('templates/'.$template); 
   } 
} 
?> 
P.S. Danke HerrB für den Tip mit der Weiterleitung per <meta> (hab' ich irgendwo im Forum gefunden).

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 

Changes :
2007-06-27 :
Der Startartikel der Zielkategorie wurde durch die Abfrage unter bestimmten Umständen nicht gefunden. Deshalb wird jetzt nur noch die passende Kategorie ermittelt und per IDCAT=.... dahin weitergeleitet.

Verfasst: Fr 25. Mai 2007, 12:34
von HerrB
Ist doch wunderbar. In etwa so meinte ich das...

Gruß
HerrB

Verfasst: Mi 30. Mai 2007, 13:28
von Tom4545
hallo tinof,
muss der geschützte bereich in die hauptnavigation?
bei mir wirds auf den standard geleitet.

Verfasst: Mi 30. Mai 2007, 13:40
von tinof
Also, ich habe den geschützten Bereich unterhalb der Hauptnavigation, ja.

Ich denke aber, da die Weiterleitung hart per IDCAT = xxx erfolgt, sollte man in jede beliebige Kategorie springen können, auch außerhalb der Hauptnavi.

Voraussetzung sind allerdings (wie sonst auch)
* die Kategorie hat einen Startartikel der auch online ist
* der Nutzer hat Zugriff auf diese Kategorie

Oder habe ich dich falsch verstanden ?

Tino

Verfasst: Mi 30. Mai 2007, 15:27
von Tom4545
schon richtig.
ich habe irgendwo eine gesperrte hauptkategorie ohne startartikel
unter dieser kategorie habe ich eine gesperrte kategorie (kundeA) mit startartikel.
wenn ich mich mit kundeA +passwort einlogge werde ich nicht weitergeleitet, statt dessen tauchen die zeilen daten-userpassword-logout auf.
hab ich irgendwo einen fehler gemacht?

Verfasst: Mi 30. Mai 2007, 21:38
von tinof
Tom4545 hat geschrieben: .... statt dessen tauchen die zeilen daten-userpassword-logout auf.
Wie sieht das genau aus ?
Erfolgt wenigstens die Anmeldung - also statt dem Login - Formular steht dort "Sie sind angemeldet als ..... ->logout" ?
Hat kundeA auch Zugriff auf die gesperrte Hauptkategorie ?
Kann man dann per 'normaler' Navigation nach kategorie_kundeA gelangen ?

Vielleicht kannst du die Kategorien ggf. erstmal testweise in die normale Navigation aufnehmen um zu schauen, ob man überhaupt zu dem gewünschten Artikel gelangen kann (unabhängig von der automatischen Weiterleitung)

Ich meine nämlich, hier irgendwo im Forum gelesen zu haben, dass verschachtelte / hierarchiche geschützte Verzeichnisse in Contenido nicht möglich sind : also ein geschütztes Verzeichnis unterhalb eines geschützten Verzeichnisses.
Vielleicht kann diesbezüglich einer von den Profis was sagen ?
Das wäre jedenfalls dann eine denkbare Ursache.

Ansonsten : Schicke mir eine PM dann können wir uns das 'vor Ort' mal anschauen.

cu
Tino

edit: Statt die Kategorien zu verschieben ist es bestimmt besser, ein zusätzliches Navigationsmodul ins Template einzubinden und den betreffenden Baum zuzuordnen

Verfasst: Do 31. Mai 2007, 06:46
von Tom4545
danke für die hilfe,
ich werds ausprobieren.
ich hatte nämlich verschachtelte geschützte verzeichnisse.

nur im moment habe ich ganz andere sorgen.
beim versuch einen neuen baum anzulegen, verschwanden alle meine verzeichnisse.
ich werde in einer neuen post um hilfe bitten.

Verfasst: Mo 11. Jun 2007, 10:26
von tinof
Hallo,

es gab noch ein Problem :
Im Backend hat diese Weiterleitung beim Bearbeiten der Artikel für gehörige "Verwirrung" gesorgt.

Das ist jetzt behoben, ich habe den Modulcode zusammen mit ein paar 'Verschönerungen' gleich oben in meinem entsprechenden Post aktualisiert.

Grüße
Tino

Verfasst: Di 12. Jun 2007, 20:44
von stefkey
Hallo,

ich habe die Modifikation von tinof benutzt, allerdings springt es nicht zum geschützten Bereich, sondern bleibt da wo ich gerade bin. Ich benutze nicht das orginal Hauptnavigationsmodul sondern die vpnavigation. Mach das ein Problem oder woher kommt der Fehler?


- Hauptnavigation
----- home
----- über uns
----- Punkt 3
----- Punkt 4
----- Mitgliederbereich (geschützte Kategorie!)
---------- geschützter Bereich


Login von jeder Seite aus möglich.


Grüße
stefkey


Nachtrag: Habs gerade im Beispielmandanten probert, da gehts irgendwie auch nett! hmmm was mach ich den falsch?

Verfasst: Mi 13. Jun 2007, 15:36
von tinof
Hallo,

unterhalb des <geschützten Bereichs> muss es noch Kategorien mit den Namen derjeweiligen Benutzer geben (darauf baut meine Änderung auf : User ABC -> springe beim Login nach Kategorie <ABC> ).

Wenn du für jeden Benutzer einfach sofort nach (allgemein) geschützter Bereich wechseln möchtest (so verstehe ich dich jetzt), dann .. gibt es mehrere Möglichkeiten :

1) du änderst die Funktion getstartcat() dahingehend, dass sie die catid der ersten geschützten Kategorie liefert (wenn es z.B. nur einen gibt) -- ist etwas komplizierter

2) du änderst bei der Weiterleitung die Zeile

Code: Alles auswählen

$weiter =    getstartcat($auth->auth["uname"]); 
in

Code: Alles auswählen

$weiter =   'idcatart=9999';
wobei 9999 die idcatart des Startartikels des geschützten bereichs ist (einfach fest 'reinschreiben, aber bei Änderungen der Kategoriestruktur muss das angepasst werden)

Hoffe, ich habe das richtig verstanden, sonst bitte nochmal posten

Grüße
Tino
[/code]