mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-12 01:12:19 +00:00
dynamic vars
This commit is contained in:
8
apps/login/next-env-vars.d.ts
vendored
8
apps/login/next-env-vars.d.ts
vendored
@@ -2,8 +2,12 @@ declare namespace NodeJS {
|
||||
interface ProcessEnv {
|
||||
// Allow any environment variable that matches the pattern
|
||||
[key: `${string}_AUDIENCE`]: string; // The system api url
|
||||
[key: `${string}_AUDIENCE`]: string; // The service user id
|
||||
[key: `${string}_AUDIENCE`]: string; // The service user private key
|
||||
[key: `${string}_SYSTEM_USER_ID`]: string; // The service user id
|
||||
[key: `${string}_SYSTEM_USER_PRIVATE_KEY`]: string; // The service user private key
|
||||
|
||||
AUDIENCE: string; // The fallback system api url
|
||||
SYSTEM_USER_ID: string; // The fallback service user id
|
||||
SYSTEM_USER_PRIVATE_KEY: string; // The fallback service user private key
|
||||
|
||||
/**
|
||||
* Self hosting: The instance url
|
||||
|
||||
@@ -5,31 +5,36 @@ export async function systemAPIToken({
|
||||
}: {
|
||||
serviceRegion: string;
|
||||
}) {
|
||||
const REGIONS = ["eu1", "us1"].map((region) => {
|
||||
return {
|
||||
id: region,
|
||||
audience: process.env[region + "_AUDIENCE"],
|
||||
userID: process.env[region + "_SYSTEM_USER_ID"],
|
||||
const prefix = serviceRegion.toUpperCase();
|
||||
const token = {
|
||||
audience: process.env[prefix + "_AUDIENCE"],
|
||||
userID: process.env[prefix + "_SYSTEM_USER_ID"],
|
||||
token: Buffer.from(
|
||||
process.env[prefix.toUpperCase() + "_SYSTEM_USER_PRIVATE_KEY"] as string,
|
||||
"base64",
|
||||
).toString("utf-8"),
|
||||
};
|
||||
|
||||
if (!token.audience || !token.userID || !token.token) {
|
||||
const fallbackToken = {
|
||||
audience: process.env.AUDIENCE,
|
||||
userID: process.env.SYSTEM_USER_ID,
|
||||
token: Buffer.from(
|
||||
process.env[
|
||||
region.toUpperCase() + "_SYSTEM_USER_PRIVATE_KEY"
|
||||
] as string,
|
||||
process.env.SYSTEM_USER_PRIVATE_KEY,
|
||||
"base64",
|
||||
).toString("utf-8"),
|
||||
};
|
||||
});
|
||||
|
||||
const region = REGIONS.find((region) => region.id === serviceRegion);
|
||||
|
||||
if (!region || !region.audience || !region.userID || !region.token) {
|
||||
throw new Error("Invalid region");
|
||||
return newSystemToken({
|
||||
audience: fallbackToken.audience,
|
||||
subject: fallbackToken.userID,
|
||||
key: fallbackToken.token,
|
||||
});
|
||||
}
|
||||
|
||||
const token = newSystemToken({
|
||||
audience: region.audience,
|
||||
subject: region.userID,
|
||||
key: region.token,
|
||||
return newSystemToken({
|
||||
audience: token.audience,
|
||||
subject: token.userID,
|
||||
key: token.token,
|
||||
});
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user