Auth client: fetch machine context even if session is null; derive role/id from machineContext
This commit is contained in:
parent
43576ff8d7
commit
8292abee88
1 changed files with 11 additions and 5 deletions
|
|
@ -102,8 +102,14 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
|
||||||
}
|
}
|
||||||
}, [session?.user])
|
}, [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(() => {
|
useEffect(() => {
|
||||||
if (!session?.user || session.user.role !== "machine") {
|
const shouldFetch = Boolean(session?.user?.role === "machine") || !session?.user
|
||||||
|
if (!shouldFetch) {
|
||||||
setMachineContext(null)
|
setMachineContext(null)
|
||||||
setMachineContextError(null)
|
setMachineContextError(null)
|
||||||
setMachineContextLoading(false)
|
setMachineContextLoading(false)
|
||||||
|
|
@ -233,13 +239,13 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [ensureUser, session?.user?.email, session?.user?.tenantId, session?.user?.role, convexUserId])
|
}, [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 personaRole = session?.user?.machinePersona ? session.user.machinePersona.toLowerCase() : null
|
||||||
const normalizedRole =
|
const normalizedRole =
|
||||||
baseRole === "machine" ? machineContext?.persona ?? personaRole ?? null : baseRole
|
baseRole === "machine" ? (machineContext?.persona ?? personaRole ?? null) : baseRole
|
||||||
|
|
||||||
const effectiveConvexUserId =
|
const effectiveConvexUserId = baseRole === "machine" ? (machineContext?.assignedUserId ?? null) : convexUserId
|
||||||
baseRole === "machine" ? machineContext?.assignedUserId ?? null : convexUserId
|
|
||||||
|
|
||||||
const value = useMemo<AuthContextValue>(
|
const value = useMemo<AuthContextValue>(
|
||||||
() => ({
|
() => ({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue