server, middleware, load label policy 🏷️

This commit is contained in:
Max Peintner
2023-04-21 15:13:14 +02:00
parent 12eb60c084
commit 12b9042392
9 changed files with 65 additions and 32 deletions

View File

@@ -1,4 +1,5 @@
import { demos } from "#/lib/demos";
import ThemeWrapper from "#/ui/ThemeWrapper";
import Link from "next/link";
export default function Page() {

14
apps/login/lib/hooks.ts Normal file
View File

@@ -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 };
}

View File

@@ -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<LabelPolicy | undefined> {
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 };

View File

@@ -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 (
<ThemeProvider
attribute="class"
defaultTheme="system"
storageKey="cp-theme"
value={{ dark: "dark" }}
>
<ThemeWrapper>{children}</ThemeWrapper>
</ThemeProvider>
// <ThemeProvider
// attribute="class"
// defaultTheme="system"
// storageKey="cp-theme"
// value={{ dark: "dark" }}
// >
/* @ts-expect-error Server Component */
<ThemeWrapper>{children}</ThemeWrapper>
// </ThemeProvider>
);
}

View File

@@ -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);

View File

@@ -0,0 +1,3 @@
import { ZitadelServer } from "./server";
export const _servers = new Map<string, ZitadelServer>();

View File

@@ -25,6 +25,7 @@ const createClient = <Client>(
};
export const getManagement = (app?: string | ZitadelServer) => {
console.log("init management");
let config;
if (app && typeof app === "string") {
const apps = getServers();

View File

@@ -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 });

View File

@@ -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<ZitadelServer> {
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[] {