From 12b9042392bcb9605a2976895f1b8bcf1bf70c5a Mon Sep 17 00:00:00 2001 From: Max Peintner Date: Fri, 21 Apr 2023 15:13:14 +0200 Subject: [PATCH] =?UTF-8?q?server,=20middleware,=20load=20label=20policy?= =?UTF-8?q?=20=F0=9F=8F=B7=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/login/app/page.tsx | 1 + apps/login/lib/hooks.ts | 14 +++++++++++ apps/login/lib/zitadel.ts | 22 ++++++++++------ apps/login/ui/LayoutProviders.tsx | 19 +++++++------- apps/login/ui/ThemeWrapper.tsx | 9 +++---- packages/zitadel-server/src/internal.ts | 3 +++ .../src/management/management.ts | 1 + packages/zitadel-server/src/middleware.ts | 3 +++ packages/zitadel-server/src/server.ts | 25 ++++++++++++------- 9 files changed, 65 insertions(+), 32 deletions(-) create mode 100644 apps/login/lib/hooks.ts create mode 100644 packages/zitadel-server/src/internal.ts diff --git a/apps/login/app/page.tsx b/apps/login/app/page.tsx index 0f89e1c757a..7726e16749f 100644 --- a/apps/login/app/page.tsx +++ b/apps/login/app/page.tsx @@ -1,4 +1,5 @@ import { demos } from "#/lib/demos"; +import ThemeWrapper from "#/ui/ThemeWrapper"; import Link from "next/link"; export default function Page() { diff --git a/apps/login/lib/hooks.ts b/apps/login/lib/hooks.ts new file mode 100644 index 00000000000..209a709e5f5 --- /dev/null +++ b/apps/login/lib/hooks.ts @@ -0,0 +1,14 @@ +import { useEffect, useState } from "react"; + +// Custom hook to read auth record and user profile doc +export function useUserData() { + const [clientData, setClientData] = useState(null); + + useEffect(() => { + let unsubscribe; + + return unsubscribe; + }, [clientData]); + + return { clientData }; +} diff --git a/apps/login/lib/zitadel.ts b/apps/login/lib/zitadel.ts index d071ba2fb45..360e8d27b2c 100644 --- a/apps/login/lib/zitadel.ts +++ b/apps/login/lib/zitadel.ts @@ -3,31 +3,37 @@ import { ZitadelServer, ZitadelServerOptions, getManagement, + orgMetadata, getServer, getServers, - initializeServer, LabelPolicy, + initializeServer, } from "@zitadel/server"; // import { getAuth } from "@zitadel/server/auth"; export const zitadelConfig: ZitadelServerOptions = { + name: "zitadel login", apiUrl: process.env.ZITADEL_API_URL ?? "", token: process.env.ZITADEL_SERVICE_USER_TOKEN ?? "", }; -if (!getServers().length) { - initializeServer(zitadelConfig); -} +let server: ZitadelServer; -const server = getServer(); -console.log(server); +if (!getServers().length) { + console.log("initialize server"); + server = initializeServer(zitadelConfig); +} export function getBranding( server: ZitadelServer ): Promise { const mgmt = getManagement(server); - - return mgmt.getLabelPolicy({}).then((resp) => resp.policy); + return mgmt + .getLabelPolicy( + {}, + { metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") } + ) + .then((resp) => resp.policy); } export { server }; diff --git a/apps/login/ui/LayoutProviders.tsx b/apps/login/ui/LayoutProviders.tsx index 4d97861c12a..a99b74894af 100644 --- a/apps/login/ui/LayoutProviders.tsx +++ b/apps/login/ui/LayoutProviders.tsx @@ -1,5 +1,3 @@ -"use client"; -import { ThemeProvider } from "next-themes"; import ThemeWrapper from "./ThemeWrapper"; type Props = { @@ -8,13 +6,14 @@ type Props = { export function LayoutProviders({ children }: Props) { return ( - - {children} - + // + /* @ts-expect-error Server Component */ + {children} + // ); } diff --git a/apps/login/ui/ThemeWrapper.tsx b/apps/login/ui/ThemeWrapper.tsx index 8c54a46c736..818285a0ffb 100644 --- a/apps/login/ui/ThemeWrapper.tsx +++ b/apps/login/ui/ThemeWrapper.tsx @@ -1,12 +1,11 @@ -"use client"; - import { getBranding } from "#/lib/zitadel"; -import { useTheme } from "next-themes"; import { server } from "../lib/zitadel"; +import { use } from "react"; const ThemeWrapper = async ({ children }: any) => { - const { resolvedTheme } = useTheme(); - const isDark = resolvedTheme && resolvedTheme === "dark"; + console.log("hehe"); + // const { resolvedTheme } = useTheme(); + const isDark = true; //resolvedTheme && resolvedTheme === "dark"; try { const policy = await getBranding(server); diff --git a/packages/zitadel-server/src/internal.ts b/packages/zitadel-server/src/internal.ts new file mode 100644 index 00000000000..34ba3eecb2f --- /dev/null +++ b/packages/zitadel-server/src/internal.ts @@ -0,0 +1,3 @@ +import { ZitadelServer } from "./server"; + +export const _servers = new Map(); diff --git a/packages/zitadel-server/src/management/management.ts b/packages/zitadel-server/src/management/management.ts index 2a8c1e6b6b7..bd2860ff814 100644 --- a/packages/zitadel-server/src/management/management.ts +++ b/packages/zitadel-server/src/management/management.ts @@ -25,6 +25,7 @@ const createClient = ( }; export const getManagement = (app?: string | ZitadelServer) => { + console.log("init management"); let config; if (app && typeof app === "string") { const apps = getServers(); diff --git a/packages/zitadel-server/src/middleware.ts b/packages/zitadel-server/src/middleware.ts index e88fd57cbe3..349b01329fb 100644 --- a/packages/zitadel-server/src/middleware.ts +++ b/packages/zitadel-server/src/middleware.ts @@ -12,3 +12,6 @@ export const authMiddleware = (token: string) => return yield* call.next(call.request, options); }; + +export const orgMetadata = (orgId: string) => + new Metadata({ "x-zitadel-orgid": orgId }); diff --git a/packages/zitadel-server/src/server.ts b/packages/zitadel-server/src/server.ts index 26ce581758e..2a6d2da456c 100644 --- a/packages/zitadel-server/src/server.ts +++ b/packages/zitadel-server/src/server.ts @@ -9,17 +9,24 @@ export interface ZitadelServerOptions extends ZitadelServerProps { name?: string; } -export interface ZitadelServer { - name: string | undefined; - config: ZitadelServerProps; -} - -export async function initializeServer( +export function initializeServer( config: ZitadelServerProps, name?: string -): Promise { - const app = { config, name }; - return app; +): ZitadelServer { + const server = new ZitadelServer(config, name); + return server; +} + +export class ZitadelServer { + name: string | undefined; + config: ZitadelServerProps; + + constructor(config: ZitadelServerProps, name?: string) { + if (name) { + this.name = name; + } + this.config = config; + } } export function getServers(): ZitadelServer[] {