Comment changer la page d'accueil après la connexion avant le chargement de la première page

J’ai un composant de thème de page de destination sur https://ejopa.discourse.group/

Cela fonctionne très bien. Je veux qu’il ne s’affiche pas pour les utilisateurs connectés. J’ai ce code, qui définit la page d’accueil dans l’initialiseur :

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

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

Cela fonctionne très bien, SAUF la première fois qu’ils se connectent. Ils sont redirigés vers /custom – s’ils cliquent sur l’icône, ils vont au bon endroit, mais pas au premier chargement..

Je dois faire . . . quelque chose . . . pour les rediriger vers la bonne page d’accueil lorsqu’ils se connectent.

L’IA a suggéré quelque chose comme ceci, qui ne semble pas fonctionner

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

EDIT ! Presque là, mais fait clignoter la page de destination après la connexion

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 || ""; // protection contre undefined
  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);
});

Je crains que ce soit le mieux que je puisse faire. Ai-je tort ?

[citation="pfaffman, post:1, sujet:369042"]Ça marche très bien, SAUF la première fois qu’ils se connectent.[/citation]
Je me demande si cela pourrait être dû au paramètre redirect_users_to_top_page, car c’est quelque chose qui redirige également l’utilisateur lors de la première visite. Mais puisque vous terminez à /custom et non à /top, ce n’est probablement pas le cas.

J’ai essayé de trouver ça mais je ne me souvenais plus comment ça s’appelait !

Exact.

Et aussi « Rediriger automatiquement les nouveaux utilisateurs et ceux absents depuis longtemps », et nous ne sommes ni nouveaux ni absents depuis longtemps…

Merci beaucoup !

1 « J'aime »