Seite 1 von 1

Mandantenwechsel im Frontend nicht erkannt

Verfasst: Fr 28. Sep 2012, 12:01
von chris8408
Hallo zusammen,

ich schlage mich gerade mit einem Problem rum.

Ich habe eine Contenido-Installation (4.8.15) mit zwei Mandanten.

ID / Verzeichnisse:
1. cms
2. xyz

Die Mandanten 1 und 2 sind gegenseitig verlinkt.

Folgendes Problem taucht im Frontend auf:
Rufe ich einzeln Mandant 1 auf, klappt alles wunderbar.
Rufe ich einzeln Mandant 2 auf, klappt auch alles wunderbar.

Rufe ich zunächst Mandant 1 auf und wechsel dann zu Mandant 2 per Link (also gleiche Session im Browser) so führt Contenido intern immer noch die Session als Mandant 1. Sprich in den Variablen $client ist immer noch die "1" gesetzt. Das Problem dabei ist, dass die hrefbase nicht geändert wird und entsprechend Mandanten-Konfigurationen auch nicht korrekt geladen werden.

Ich habe einmal in der front_content.php die Variable $client hart auf 2 gesetzt. Damit wird glücklickerweise in den meisten Fällen die hrefbase korrekt gesetzt. Führe ich ein Login durch und nutzt man fälschlicherweise einen Frontenduser aus Mandant 1, wird die base wieder falsch mit mandant 1 gesetzt.

Für Mandant 1 benötige ich zwingend den hrefbase. Ich habe schon versucht diesen global zu deaktivieren (dann funktioniert es mit dem Login). Anschließend habe ich per Mandanteneinstellungen im Mandant 1 den base-Generator wieder hinzukonfiguriert. Dies hat den Effekt, dass beim wechsel von Mandant 1 auf Mandant 2 die Base-Generierung wieder übernommen und gar das $client=2 in der front_content.php für die Abfrage der Konfigurationen ignoriert wird (Base immer da und beim Login wieder falsch).

Hat hier jemand einen Tip, wo und wie ich was machen muss.

Danke,

Christian John

Re: Mandantenwechsel im Frontend nicht erkannt

Verfasst: Sa 29. Sep 2012, 14:08
von xmurrix
Hallo chris8408,

du kannst folgendes Probieren:
  • Erstelle jeweils eine Konfígurations-Datei in den Mandantenverzeichnissen, z. B. "cms/config.local.php" und "xyz/config.local.php"
  • Überschreibe den Mandanten, also die Globale Variable $client mit $load_client

    Code: Alles auswählen

    <?php
    // code der config.local.php
    global $client, $load_client;
    $client = (int) $load_client;  // $load_client ist im mandantenverzeichnis in der config.php definiert
    
So hast du immer die richtige Mandantenid.

Der Grund ist folgendes. Die Id des Mandanten wird in der Session gespeichert, wenn du vom "cms" (z. B. id = 1) zum anderen Mandanten "xyz" (z. B. id = 2) wechselst, wird die Id des zuerst gespeicherten Mandanten verwendet, nicht die des neuen Mandanten.

Bei einem Mehrmandantensystem mit einem Mandanteverzeichnis muss man beim Wechsel des Mandanten die Id des Mandanten an die URL anhängen.
In deinem Fall (Mehrmandantensystem mit eigenen Mandantenverzeichnissen) sollte das idealerweise automatisch funktionieren.

Der Vorschlag hier sollte dein Problem lösen, bessr ist es, wenn das einem von CONTENIDO abgenommen wird.

Gruß
xmurrix

Re: Mandantenwechsel im Frontend nicht erkannt

Verfasst: So 30. Sep 2012, 12:49
von chris8408
Hallo xmurrix,

wow. Das habe ich echt noch eine Lücke bei mir entdeckt. Das funktioniert auf Anhieb!

Vielen, vielen Dank.

Chris

Re: Mandantenwechsel im Frontend nicht erkannt

Verfasst: So 25. Mai 2014, 17:16
von borcherta
Hallo, habe das gleiche Problem mit der 4.6.24 Version.

Scheint aber nicht zu funktionieren mit der Lösung eine congig Datei in jedes Mandantenverzeichnis zu kopieren.

Hat jemand eine Idee?
Danke
.axel