From 8292abee880421dceca7d8b93883bae31732e8b4 Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Tue, 14 Oct 2025 21:57:21 -0300 Subject: [PATCH] Auth client: fetch machine context even if session is null; derive role/id from machineContext --- src/lib/auth-client.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lib/auth-client.tsx b/src/lib/auth-client.tsx index 5d1490c..7a91b3b 100644 --- a/src/lib/auth-client.tsx +++ b/src/lib/auth-client.tsx @@ -102,8 +102,14 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { } }, [session?.user]) + // Sempre tenta obter o contexto da máquina. + // 1) Se a sessão Better Auth indicar role "machine", buscamos normalmente. + // 2) Se a sessão vier nula (alguns ambientes WebView), ainda assim tentamos + // carregar o contexto — se a API responder 200, assumimos que há sessão válida + // do lado do servidor e populamos o contexto para o restante do app. useEffect(() => { - if (!session?.user || session.user.role !== "machine") { + const shouldFetch = Boolean(session?.user?.role === "machine") || !session?.user + if (!shouldFetch) { setMachineContext(null) setMachineContextError(null) setMachineContextLoading(false) @@ -233,13 +239,13 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [ensureUser, session?.user?.email, session?.user?.tenantId, session?.user?.role, convexUserId]) - const baseRole = session?.user?.role ? session.user.role.toLowerCase() : null + // Se não houver sessão mas tivermos contexto de máquina, tratamos como "machine" + const baseRole = session?.user?.role ? session.user.role.toLowerCase() : (machineContext ? "machine" : null) const personaRole = session?.user?.machinePersona ? session.user.machinePersona.toLowerCase() : null const normalizedRole = - baseRole === "machine" ? machineContext?.persona ?? personaRole ?? null : baseRole + baseRole === "machine" ? (machineContext?.persona ?? personaRole ?? null) : baseRole - const effectiveConvexUserId = - baseRole === "machine" ? machineContext?.assignedUserId ?? null : convexUserId + const effectiveConvexUserId = baseRole === "machine" ? (machineContext?.assignedUserId ?? null) : convexUserId const value = useMemo( () => ({