mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-23 21:59:28 -05:00
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
import { getServerSession } from "next-auth";
|
|
import { ChatwootWidget } from "@/app/chatwoot/ChatwootWidget";
|
|
import { PostHogIdentify } from "@/app/posthog/PostHogIdentify";
|
|
import {
|
|
CHATWOOT_BASE_URL,
|
|
CHATWOOT_WEBSITE_TOKEN,
|
|
IS_CHATWOOT_CONFIGURED,
|
|
POSTHOG_KEY,
|
|
SESSION_MAX_AGE,
|
|
} from "@/lib/constants";
|
|
import { getUser } from "@/lib/user/service";
|
|
import { NextAuthProvider } from "@/modules/auth/components/next-auth-provider";
|
|
import { authOptions } from "@/modules/auth/lib/authOptions";
|
|
import { ClientLogout } from "@/modules/ui/components/client-logout";
|
|
import { NoMobileOverlay } from "@/modules/ui/components/no-mobile-overlay";
|
|
import { ToasterClient } from "@/modules/ui/components/toaster-client";
|
|
|
|
const AppLayout = async ({ children }: { children: React.ReactNode }) => {
|
|
const session = await getServerSession(authOptions);
|
|
const user = session?.user?.id ? await getUser(session.user.id) : null;
|
|
|
|
// If user account is deactivated, log them out instead of rendering the app
|
|
if (user?.isActive === false) {
|
|
return <ClientLogout />;
|
|
}
|
|
|
|
return (
|
|
<NextAuthProvider sessionMaxAge={SESSION_MAX_AGE}>
|
|
<NoMobileOverlay />
|
|
{POSTHOG_KEY && user && (
|
|
<PostHogIdentify posthogKey={POSTHOG_KEY} userId={user.id} email={user.email} name={user.name} />
|
|
)}
|
|
{IS_CHATWOOT_CONFIGURED && (
|
|
<ChatwootWidget
|
|
userEmail={user?.email}
|
|
userName={user?.name}
|
|
userId={user?.id}
|
|
chatwootWebsiteToken={CHATWOOT_WEBSITE_TOKEN}
|
|
chatwootBaseUrl={CHATWOOT_BASE_URL}
|
|
/>
|
|
)}
|
|
<ToasterClient />
|
|
{children}
|
|
</NextAuthProvider>
|
|
);
|
|
};
|
|
|
|
export default AppLayout;
|