Wie man die Homepage nach dem Login ändert, bevor die erste Seite lädt

Ich habe eine Landingpage-Komponente unter https://ejopa.discourse.group/

Sie funktioniert gut. Ich möchte, dass sie für angemeldete Benutzer nicht angezeigt wird. Ich habe diesen Code, der die Startseite in der Initialisierung festlegt:

export default apiInitializer((api) => {
  const siteSettings = api.container.lookup("service:site-settings");
  const topMenu = siteSettings.top_menu || ""; // Schutz vor undefiniert
  const globalDefaultHomepage = topMenu.split("|")[0].trim();
  const currentUser = api.getCurrentUser();

  if (currentUser && defaultHomepage() === "custom") {
    setDefaultHomepage(globalDefaultHomepage);
  }
  api.renderInOutlet("custom-homepage", LandingPage);
});

Das funktioniert gut, AUSSER beim ersten Login. Sie werden zu /custom weitergeleitet. Wenn sie auf das Symbol klicken, gelangen sie an die richtige Stelle, aber nicht beim ersten Laden.

Ich muss etwas tun, um sie beim Login zur richtigen Startseite weiterzuleiten.

Die KI schlug etwas wie das hier vor, was anscheinend nicht funktioniert:

      api.onAppEvent('application:after-login', afterLoginHandler);

EDIT! Fast geschafft, aber die Landingpage flackert nach dem Login auf

import { apiInitializer } from "discourse/lib/api";
import { defaultHomepage, setDefaultHomepage } from "discourse/lib/utilities";
import LandingPage from "../components/landing-page";

export default apiInitializer((api) => {
  const siteSettings = api.container.lookup("service:site-settings");
  const topMenu = siteSettings.top_menu || ""; // Schutz vor undefiniert
  const globalDefaultHomepage = topMenu.split("|")[0].trim();
  const currentUser = api.getCurrentUser();

  api.onPageChange((url) => {
    const isCustom = url === "/custom";
    const router = api.container.lookup("service:router");
    const currentUser = api.container.lookup("service:current-user");
    if (currentUser && isCustom) {
      router.transitionTo("discovery." + defaultHomepage());
    }
  });

  if (currentUser && defaultHomepage() === "custom") {
    setDefaultHomepage(globalDefaultHomepage);
  }
  api.renderInOutlet("custom-homepage", LandingPage);
});

Ich fürchte, das ist das Beste, was ich tun kann. Liege ich falsch?

[Zitat=“pfaffman, Beitrag:1, Thema:369042”]Es funktioniert super, AUSSER beim ersten Mal, wenn sie sich anmelden.[/Zitat]
Ich frage mich, ob dies an der Einstellung redirect_users_to_top_page liegen könnte, da dies auch den Benutzer beim ersten Besuch umleitet. Da Sie jedoch bei /custom und nicht bei /top landen, ist dies wahrscheinlich nicht der Fall.

[Zitat=“Moin, Beitrag:2, Thema:369042”]
redirect_users_to_top_page
[/Zitat]

Ich habe versucht, das zu finden, konnte mich aber nicht erinnern, wie es hieß!

[Zitat=“Moin, Beitrag:2, Thema:369042”]
da Sie bei /custom und nicht bei /top enden, ist dies wahrscheinlich nicht der Fall.
[/Zitat]

Stimmt.

Und auch “Automatisch neue und lange abwesende Benutzer umleiten”, und wir sind weder neu noch lange abwesend. . .

Vielen Dank!

1 „Gefällt mir“