mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-12 10:25:58 +00:00
server, middleware, load label policy 🏷️
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import { demos } from "#/lib/demos";
|
import { demos } from "#/lib/demos";
|
||||||
|
import ThemeWrapper from "#/ui/ThemeWrapper";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
|
|||||||
14
apps/login/lib/hooks.ts
Normal file
14
apps/login/lib/hooks.ts
Normal 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 };
|
||||||
|
}
|
||||||
@@ -3,31 +3,37 @@ import {
|
|||||||
ZitadelServer,
|
ZitadelServer,
|
||||||
ZitadelServerOptions,
|
ZitadelServerOptions,
|
||||||
getManagement,
|
getManagement,
|
||||||
|
orgMetadata,
|
||||||
getServer,
|
getServer,
|
||||||
getServers,
|
getServers,
|
||||||
initializeServer,
|
|
||||||
LabelPolicy,
|
LabelPolicy,
|
||||||
|
initializeServer,
|
||||||
} from "@zitadel/server";
|
} from "@zitadel/server";
|
||||||
// import { getAuth } from "@zitadel/server/auth";
|
// import { getAuth } from "@zitadel/server/auth";
|
||||||
|
|
||||||
export const zitadelConfig: ZitadelServerOptions = {
|
export const zitadelConfig: ZitadelServerOptions = {
|
||||||
|
name: "zitadel login",
|
||||||
apiUrl: process.env.ZITADEL_API_URL ?? "",
|
apiUrl: process.env.ZITADEL_API_URL ?? "",
|
||||||
token: process.env.ZITADEL_SERVICE_USER_TOKEN ?? "",
|
token: process.env.ZITADEL_SERVICE_USER_TOKEN ?? "",
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!getServers().length) {
|
let server: ZitadelServer;
|
||||||
initializeServer(zitadelConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
const server = getServer();
|
if (!getServers().length) {
|
||||||
console.log(server);
|
console.log("initialize server");
|
||||||
|
server = initializeServer(zitadelConfig);
|
||||||
|
}
|
||||||
|
|
||||||
export function getBranding(
|
export function getBranding(
|
||||||
server: ZitadelServer
|
server: ZitadelServer
|
||||||
): Promise<LabelPolicy | undefined> {
|
): Promise<LabelPolicy | undefined> {
|
||||||
const mgmt = getManagement(server);
|
const mgmt = getManagement(server);
|
||||||
|
return mgmt
|
||||||
return mgmt.getLabelPolicy({}).then((resp) => resp.policy);
|
.getLabelPolicy(
|
||||||
|
{},
|
||||||
|
{ metadata: orgMetadata(process.env.ZITADEL_ORG_ID ?? "") }
|
||||||
|
)
|
||||||
|
.then((resp) => resp.policy);
|
||||||
}
|
}
|
||||||
|
|
||||||
export { server };
|
export { server };
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
"use client";
|
|
||||||
import { ThemeProvider } from "next-themes";
|
|
||||||
import ThemeWrapper from "./ThemeWrapper";
|
import ThemeWrapper from "./ThemeWrapper";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -8,13 +6,14 @@ type Props = {
|
|||||||
|
|
||||||
export function LayoutProviders({ children }: Props) {
|
export function LayoutProviders({ children }: Props) {
|
||||||
return (
|
return (
|
||||||
<ThemeProvider
|
// <ThemeProvider
|
||||||
attribute="class"
|
// attribute="class"
|
||||||
defaultTheme="system"
|
// defaultTheme="system"
|
||||||
storageKey="cp-theme"
|
// storageKey="cp-theme"
|
||||||
value={{ dark: "dark" }}
|
// value={{ dark: "dark" }}
|
||||||
>
|
// >
|
||||||
<ThemeWrapper>{children}</ThemeWrapper>
|
/* @ts-expect-error Server Component */
|
||||||
</ThemeProvider>
|
<ThemeWrapper>{children}</ThemeWrapper>
|
||||||
|
// </ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
"use client";
|
|
||||||
|
|
||||||
import { getBranding } from "#/lib/zitadel";
|
import { getBranding } from "#/lib/zitadel";
|
||||||
import { useTheme } from "next-themes";
|
|
||||||
import { server } from "../lib/zitadel";
|
import { server } from "../lib/zitadel";
|
||||||
|
import { use } from "react";
|
||||||
|
|
||||||
const ThemeWrapper = async ({ children }: any) => {
|
const ThemeWrapper = async ({ children }: any) => {
|
||||||
const { resolvedTheme } = useTheme();
|
console.log("hehe");
|
||||||
const isDark = resolvedTheme && resolvedTheme === "dark";
|
// const { resolvedTheme } = useTheme();
|
||||||
|
const isDark = true; //resolvedTheme && resolvedTheme === "dark";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const policy = await getBranding(server);
|
const policy = await getBranding(server);
|
||||||
|
|||||||
3
packages/zitadel-server/src/internal.ts
Normal file
3
packages/zitadel-server/src/internal.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import { ZitadelServer } from "./server";
|
||||||
|
|
||||||
|
export const _servers = new Map<string, ZitadelServer>();
|
||||||
@@ -25,6 +25,7 @@ const createClient = <Client>(
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const getManagement = (app?: string | ZitadelServer) => {
|
export const getManagement = (app?: string | ZitadelServer) => {
|
||||||
|
console.log("init management");
|
||||||
let config;
|
let config;
|
||||||
if (app && typeof app === "string") {
|
if (app && typeof app === "string") {
|
||||||
const apps = getServers();
|
const apps = getServers();
|
||||||
|
|||||||
@@ -12,3 +12,6 @@ export const authMiddleware = (token: string) =>
|
|||||||
|
|
||||||
return yield* call.next(call.request, options);
|
return yield* call.next(call.request, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const orgMetadata = (orgId: string) =>
|
||||||
|
new Metadata({ "x-zitadel-orgid": orgId });
|
||||||
|
|||||||
@@ -9,17 +9,24 @@ export interface ZitadelServerOptions extends ZitadelServerProps {
|
|||||||
name?: string;
|
name?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ZitadelServer {
|
export function initializeServer(
|
||||||
name: string | undefined;
|
|
||||||
config: ZitadelServerProps;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function initializeServer(
|
|
||||||
config: ZitadelServerProps,
|
config: ZitadelServerProps,
|
||||||
name?: string
|
name?: string
|
||||||
): Promise<ZitadelServer> {
|
): ZitadelServer {
|
||||||
const app = { config, name };
|
const server = new ZitadelServer(config, name);
|
||||||
return app;
|
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[] {
|
export function getServers(): ZitadelServer[] {
|
||||||
|
|||||||
Reference in New Issue
Block a user