UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

50 lines (48 loc) • 1.98 kB
const require_plugin_path = require('./plugin-path.cjs'); const require_ui_auth = require('./auth.cjs'); let _tanstack_react_router = require("@tanstack/react-router"); //#region src/ui/auth-guards.ts async function ensureSession(context) { const { queryClient, authClient } = context; return queryClient.query(require_ui_auth.sessionQueryOptions(authClient)); } function buildAuthContext(session) { return { isAuthenticated: !!session?.user, user: session?.user ?? null, session: session?.session ?? null, activeOrganizationId: session?.session?.activeOrganizationId ?? null, isAnonymous: session?.user?.isAnonymous ?? false, isAdmin: session?.user?.role === "admin", isBanned: session?.user?.banned ?? false }; } async function requireSession({ context, location }) { const session = await ensureSession(context); if (!session?.user) throw (0, _tanstack_react_router.redirect)({ href: require_plugin_path.pluginHref("/login", { redirect: location.href }) }); if (session.user.banned) throw (0, _tanstack_react_router.redirect)({ href: require_plugin_path.pluginPath("/login#banned") }); return { auth: buildAuthContext(session), session }; } async function requireAdmin(args) { const result = await requireSession(args); if (result.session.user?.role !== "admin") throw (0, _tanstack_react_router.redirect)({ to: "/dashboard" }); return result; } /** * Clears private and public query data on sign-out while leaving an explicit * signed-out session entry — the cache must remember "signed out" so a late * router-context session cannot resurrect stale authed state. */ async function clearAuthenticatedQueries(queryClient) { await queryClient.cancelQueries(); queryClient.clear(); queryClient.setQueryData(require_ui_auth.sessionQueryKey, null); } //#endregion exports.clearAuthenticatedQueries = clearAuthenticatedQueries; exports.requireAdmin = requireAdmin; exports.requireSession = requireSession; //# sourceMappingURL=auth-guards.cjs.map