Hello :)
Alors voila j'ai un soucis avec NextJS (version App Router)
J'ai un AuthContextqui créée un state user quand le user est connecté à Firebase
J'ai une page protégée qui vérifie que le user soit bien connecté avec const user = useContext(AuthProvider)
Bon jusque la ça va, le soucis c'est que le context met un peu de temps à charger, et cette lenteur c'est devenu un vrai problème depuis que j'ai essayé de protéger ma route
En gros quand je fais
if (!user) router.redirect("/signin")
La page me redirige même si je suis connecté, tout ça parce que le programme n'attends pas la réponse
Du coup pour ma question: Vous avez une solution pour avoir une route protégée qui fonctionne? J'ai essayé de passer la page en SSR mais les use
ne fonctionnent pas dans des pages server, il faut des pages clients :/
Voila merci :)
Fait en sorte que ton contexte ne rende les "children" que lorsqu'il a finit de résoudre l'état d'authentification de l'utilsateur.
Hello :)
Merci, alors c'est ce que j'avais fait initialement, et ensuite je voulais protéger mes routes
J'ai fais en partie cette solution
Dans mon AuthContext.js j''ai ajouté une valeur par défaut dans mon state
Si quelqu'un à le même soucis:
//AuthContext.js
const [ user, set_user ] = useState({ auth: null, state: "pending" })
onAuthStatechanged(user => set_user({ auth: user, state: "ready" }))
// page.js
if (user.state === "ready") {
if (!user.auth) return redirect...
return (<div>OK</div>)
}
return (<div>Loading...</div>)
Eeet niveau perfs j'ai trouvé ça lent du coup j'ai tout migré sur AstroJS, un peu plus chiant à dev mais les perfs sont dingues ^^