mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 16:27:46 +00:00
Updated "defaultOrgId" and "defaultOrgSlug" to "defaultAuthOrgId" and "defaultAuthOrgSlug"
This commit is contained in:
@@ -2,26 +2,26 @@ import { Knex } from "knex";
|
|||||||
|
|
||||||
import { TableName } from "../schemas";
|
import { TableName } from "../schemas";
|
||||||
|
|
||||||
const DEFAULT_ORG_ID_FIELD = "defaultOrgId";
|
const DEFAULT_AUTH_ORG_ID_FIELD = "defaultAuthOrgId";
|
||||||
|
|
||||||
export async function up(knex: Knex): Promise<void> {
|
export async function up(knex: Knex): Promise<void> {
|
||||||
const hasDefaultOrgColumn = await knex.schema.hasColumn(TableName.SuperAdmin, DEFAULT_ORG_ID_FIELD);
|
const hasDefaultOrgColumn = await knex.schema.hasColumn(TableName.SuperAdmin, DEFAULT_AUTH_ORG_ID_FIELD);
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.SuperAdmin, (t) => {
|
await knex.schema.alterTable(TableName.SuperAdmin, (t) => {
|
||||||
if (!hasDefaultOrgColumn) {
|
if (!hasDefaultOrgColumn) {
|
||||||
t.uuid(DEFAULT_ORG_ID_FIELD).nullable();
|
t.uuid(DEFAULT_AUTH_ORG_ID_FIELD).nullable();
|
||||||
t.foreign(DEFAULT_ORG_ID_FIELD).references("id").inTable(TableName.Organization).onDelete("SET NULL");
|
t.foreign(DEFAULT_AUTH_ORG_ID_FIELD).references("id").inTable(TableName.Organization).onDelete("SET NULL");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function down(knex: Knex): Promise<void> {
|
export async function down(knex: Knex): Promise<void> {
|
||||||
const hasDefaultOrgColumn = await knex.schema.hasColumn(TableName.SuperAdmin, DEFAULT_ORG_ID_FIELD);
|
const hasDefaultOrgColumn = await knex.schema.hasColumn(TableName.SuperAdmin, DEFAULT_AUTH_ORG_ID_FIELD);
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.SuperAdmin, (t) => {
|
await knex.schema.alterTable(TableName.SuperAdmin, (t) => {
|
||||||
if (hasDefaultOrgColumn) {
|
if (hasDefaultOrgColumn) {
|
||||||
t.dropForeign([DEFAULT_ORG_ID_FIELD]);
|
t.dropForeign([DEFAULT_AUTH_ORG_ID_FIELD]);
|
||||||
t.dropColumn(DEFAULT_ORG_ID_FIELD);
|
t.dropColumn(DEFAULT_AUTH_ORG_ID_FIELD);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export const SuperAdminSchema = z.object({
|
|||||||
trustSamlEmails: z.boolean().default(false).nullable().optional(),
|
trustSamlEmails: z.boolean().default(false).nullable().optional(),
|
||||||
trustLdapEmails: z.boolean().default(false).nullable().optional(),
|
trustLdapEmails: z.boolean().default(false).nullable().optional(),
|
||||||
trustOidcEmails: z.boolean().default(false).nullable().optional(),
|
trustOidcEmails: z.boolean().default(false).nullable().optional(),
|
||||||
defaultOrgId: z.string().uuid().nullable().optional()
|
defaultAuthOrgId: z.string().uuid().nullable().optional()
|
||||||
});
|
});
|
||||||
|
|
||||||
export type TSuperAdmin = z.infer<typeof SuperAdminSchema>;
|
export type TSuperAdmin = z.infer<typeof SuperAdminSchema>;
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export const registerAdminRouter = async (server: FastifyZodProvider) => {
|
|||||||
200: z.object({
|
200: z.object({
|
||||||
config: SuperAdminSchema.omit({ createdAt: true, updatedAt: true }).extend({
|
config: SuperAdminSchema.omit({ createdAt: true, updatedAt: true }).extend({
|
||||||
isMigrationModeOn: z.boolean(),
|
isMigrationModeOn: z.boolean(),
|
||||||
defaultOrgSlug: z.string().nullable(),
|
defaultAuthOrgSlug: z.string().nullable(),
|
||||||
isSecretScanningDisabled: z.boolean()
|
isSecretScanningDisabled: z.boolean()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -54,12 +54,12 @@ export const registerAdminRouter = async (server: FastifyZodProvider) => {
|
|||||||
trustSamlEmails: z.boolean().optional(),
|
trustSamlEmails: z.boolean().optional(),
|
||||||
trustLdapEmails: z.boolean().optional(),
|
trustLdapEmails: z.boolean().optional(),
|
||||||
trustOidcEmails: z.boolean().optional(),
|
trustOidcEmails: z.boolean().optional(),
|
||||||
defaultOrgSlug: z.string().optional().nullable()
|
defaultAuthOrgSlug: z.string().optional().nullable()
|
||||||
}),
|
}),
|
||||||
response: {
|
response: {
|
||||||
200: z.object({
|
200: z.object({
|
||||||
config: SuperAdminSchema.extend({
|
config: SuperAdminSchema.extend({
|
||||||
defaultOrgSlug: z.string().nullable()
|
defaultAuthOrgSlug: z.string().nullable()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,17 +10,17 @@ export const superAdminDALFactory = (db: TDbClient) => {
|
|||||||
const findById = async (id: string) => {
|
const findById = async (id: string) => {
|
||||||
const config = await db(TableName.SuperAdmin)
|
const config = await db(TableName.SuperAdmin)
|
||||||
.where(`${TableName.SuperAdmin}.id`, id)
|
.where(`${TableName.SuperAdmin}.id`, id)
|
||||||
.leftJoin(TableName.Organization, `${TableName.SuperAdmin}.defaultOrgId`, `${TableName.Organization}.id`)
|
.leftJoin(TableName.Organization, `${TableName.SuperAdmin}.defaultAuthOrgId`, `${TableName.Organization}.id`)
|
||||||
.select(
|
.select(
|
||||||
db.ref("*").withSchema(TableName.SuperAdmin) as unknown as keyof TSuperAdmin,
|
db.ref("*").withSchema(TableName.SuperAdmin) as unknown as keyof TSuperAdmin,
|
||||||
db.ref("slug").withSchema(TableName.Organization).as("defaultOrgSlug")
|
db.ref("slug").withSchema(TableName.Organization).as("defaultAuthOrgSlug")
|
||||||
)
|
)
|
||||||
.first();
|
.first();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
defaultOrgSlug: config?.defaultOrgSlug || null,
|
defaultAuthOrgSlug: config?.defaultAuthOrgSlug || null,
|
||||||
...config
|
...config
|
||||||
} as TSuperAdmin & { defaultOrgSlug: string | null };
|
} as TSuperAdmin & { defaultAuthOrgSlug: string | null };
|
||||||
};
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ type TSuperAdminServiceFactoryDep = {
|
|||||||
export type TSuperAdminServiceFactory = ReturnType<typeof superAdminServiceFactory>;
|
export type TSuperAdminServiceFactory = ReturnType<typeof superAdminServiceFactory>;
|
||||||
|
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
export let getServerCfg: () => Promise<TSuperAdmin & { defaultOrgSlug: string | null }>;
|
export let getServerCfg: () => Promise<TSuperAdmin & { defaultAuthOrgSlug: string | null }>;
|
||||||
|
|
||||||
const ADMIN_CONFIG_KEY = "infisical-admin-cfg";
|
const ADMIN_CONFIG_KEY = "infisical-admin-cfg";
|
||||||
const ADMIN_CONFIG_KEY_EXP = 60; // 60s
|
const ADMIN_CONFIG_KEY_EXP = 60; // 60s
|
||||||
@@ -57,7 +57,7 @@ export const superAdminServiceFactory = ({
|
|||||||
return serverCfg;
|
return serverCfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
const keyStoreServerCfg = JSON.parse(config) as TSuperAdmin & { defaultOrgSlug: string | null };
|
const keyStoreServerCfg = JSON.parse(config) as TSuperAdmin & { defaultAuthOrgSlug: string | null };
|
||||||
return {
|
return {
|
||||||
...keyStoreServerCfg,
|
...keyStoreServerCfg,
|
||||||
// this is to allow admin router to work
|
// this is to allow admin router to work
|
||||||
@@ -78,9 +78,9 @@ export const superAdminServiceFactory = ({
|
|||||||
|
|
||||||
const updateServerCfg = async (data: TUpdateServerCfgDTO) => {
|
const updateServerCfg = async (data: TUpdateServerCfgDTO) => {
|
||||||
let organization: TOrganizations | undefined;
|
let organization: TOrganizations | undefined;
|
||||||
if (data.defaultOrgSlug) {
|
if (data.defaultAuthOrgSlug) {
|
||||||
organization = await orgDAL.findOne({
|
organization = await orgDAL.findOne({
|
||||||
slug: data.defaultOrgSlug
|
slug: data.defaultAuthOrgSlug
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!organization) {
|
if (!organization) {
|
||||||
@@ -92,13 +92,13 @@ export const superAdminServiceFactory = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
const updatedServerCfg = await serverCfgDAL.updateById(ADMIN_CONFIG_DB_UUID, {
|
const updatedServerCfg = await serverCfgDAL.updateById(ADMIN_CONFIG_DB_UUID, {
|
||||||
...omit(data, ["defaultOrgSlug"]),
|
...omit(data, ["defaultAuthOrgSlug"]),
|
||||||
defaultOrgId: organization?.id || null
|
defaultAuthOrgId: organization?.id || null
|
||||||
});
|
});
|
||||||
|
|
||||||
const result = {
|
const result = {
|
||||||
...updatedServerCfg,
|
...updatedServerCfg,
|
||||||
defaultOrgSlug: organization?.slug || null
|
defaultAuthOrgSlug: organization?.slug || null
|
||||||
};
|
};
|
||||||
|
|
||||||
await keyStore.setItemWithExpiry(ADMIN_CONFIG_KEY, ADMIN_CONFIG_KEY_EXP, JSON.stringify(result));
|
await keyStore.setItemWithExpiry(ADMIN_CONFIG_KEY, ADMIN_CONFIG_KEY_EXP, JSON.stringify(result));
|
||||||
|
|||||||
@@ -18,6 +18,6 @@ export type TAdminSignUpDTO = {
|
|||||||
userAgent: string;
|
userAgent: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TUpdateServerCfgDTO = Omit<TSuperAdminUpdate, "defaultOrgId"> & {
|
export type TUpdateServerCfgDTO = Omit<TSuperAdminUpdate, "defaultAuthOrgId"> & {
|
||||||
defaultOrgSlug?: string | null;
|
defaultAuthOrgSlug?: string | null;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ export type TServerConfig = {
|
|||||||
trustLdapEmails: boolean;
|
trustLdapEmails: boolean;
|
||||||
trustOidcEmails: boolean;
|
trustOidcEmails: boolean;
|
||||||
isSecretScanningDisabled: boolean;
|
isSecretScanningDisabled: boolean;
|
||||||
defaultOrgSlug: string | null;
|
defaultAuthOrgSlug: string | null;
|
||||||
defaultOrgId: string | null;
|
defaultAuthOrgId: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TCreateAdminUserDTO = {
|
export type TCreateAdminUserDTO = {
|
||||||
|
|||||||
@@ -35,12 +35,12 @@ export const useNavigateToSelectOrganization = () => {
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const navigate = async (cliCallbackPort?: string) => {
|
const navigate = async (cliCallbackPort?: string) => {
|
||||||
if (config.defaultOrgId) {
|
if (config.defaultAuthOrgId) {
|
||||||
await selectOrganization.mutateAsync({
|
await selectOrganization.mutateAsync({
|
||||||
organizationId: config.defaultOrgId
|
organizationId: config.defaultAuthOrgId
|
||||||
});
|
});
|
||||||
|
|
||||||
await navigateUserToOrg(router, config.defaultOrgId);
|
await navigateUserToOrg(router, config.defaultAuthOrgId);
|
||||||
}
|
}
|
||||||
|
|
||||||
queryClient.invalidateQueries(userKeys.getUser);
|
queryClient.invalidateQueries(userKeys.getUser);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export const LoginLDAP = () => {
|
|||||||
const passedUsername = queryParams.get("username");
|
const passedUsername = queryParams.get("username");
|
||||||
|
|
||||||
const [organizationSlug, setOrganizationSlug] = useState(
|
const [organizationSlug, setOrganizationSlug] = useState(
|
||||||
config.defaultOrgSlug || passedOrgSlug || ""
|
config.defaultAuthOrgSlug || passedOrgSlug || ""
|
||||||
);
|
);
|
||||||
const [username, setUsername] = useState(passedUsername || "");
|
const [username, setUsername] = useState(passedUsername || "");
|
||||||
const [password, setPassword] = useState("");
|
const [password, setPassword] = useState("");
|
||||||
@@ -67,7 +67,7 @@ export const LoginLDAP = () => {
|
|||||||
What's your LDAP Login?
|
What's your LDAP Login?
|
||||||
</p>
|
</p>
|
||||||
<form onSubmit={handleSubmission}>
|
<form onSubmit={handleSubmission}>
|
||||||
{!config.defaultOrgSlug && !passedOrgSlug && (
|
{!config.defaultAuthOrgSlug && !passedOrgSlug && (
|
||||||
<div className="relative mx-auto flex max-h-24 w-1/4 w-full min-w-[20rem] items-center justify-center rounded-lg md:max-h-28 md:min-w-[22rem] lg:w-1/6">
|
<div className="relative mx-auto flex max-h-24 w-1/4 w-full min-w-[20rem] items-center justify-center rounded-lg md:max-h-28 md:min-w-[22rem] lg:w-1/6">
|
||||||
<div className="flex max-h-24 w-full items-center justify-center rounded-lg md:max-h-28">
|
<div className="flex max-h-24 w-full items-center justify-center rounded-lg md:max-h-28">
|
||||||
<Input
|
<Input
|
||||||
|
|||||||
@@ -54,8 +54,8 @@ export const InitialStep = ({ setStep, email, setEmail, password, setPassword }:
|
|||||||
}, [serverDetails?.samlDefaultOrgSlug]);
|
}, [serverDetails?.samlDefaultOrgSlug]);
|
||||||
|
|
||||||
const handleSaml = useCallback((step: number) => {
|
const handleSaml = useCallback((step: number) => {
|
||||||
if (config.defaultOrgSlug) {
|
if (config.defaultAuthOrgSlug) {
|
||||||
redirectToSaml(config.defaultOrgSlug);
|
redirectToSaml(config.defaultAuthOrgSlug);
|
||||||
} else {
|
} else {
|
||||||
setStep(step);
|
setStep(step);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ const formSchema = z.object({
|
|||||||
trustSamlEmails: z.boolean(),
|
trustSamlEmails: z.boolean(),
|
||||||
trustLdapEmails: z.boolean(),
|
trustLdapEmails: z.boolean(),
|
||||||
trustOidcEmails: z.boolean(),
|
trustOidcEmails: z.boolean(),
|
||||||
defaultOrgSlug: z.string().optional().nullable(),
|
|
||||||
defaultAuthOrgSlug: z.string().optional().nullable()
|
defaultAuthOrgSlug: z.string().optional().nullable()
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -65,7 +64,6 @@ export const AdminDashboardPage = () => {
|
|||||||
trustSamlEmails: config.trustSamlEmails,
|
trustSamlEmails: config.trustSamlEmails,
|
||||||
trustLdapEmails: config.trustLdapEmails,
|
trustLdapEmails: config.trustLdapEmails,
|
||||||
trustOidcEmails: config.trustOidcEmails,
|
trustOidcEmails: config.trustOidcEmails,
|
||||||
defaultOrgSlug: config.defaultOrgSlug,
|
|
||||||
defaultAuthOrgSlug: config.defaultAuthOrgSlug
|
defaultAuthOrgSlug: config.defaultAuthOrgSlug
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -96,7 +94,6 @@ export const AdminDashboardPage = () => {
|
|||||||
trustSamlEmails,
|
trustSamlEmails,
|
||||||
trustLdapEmails,
|
trustLdapEmails,
|
||||||
trustOidcEmails,
|
trustOidcEmails,
|
||||||
defaultOrgSlug,
|
|
||||||
defaultAuthOrgSlug
|
defaultAuthOrgSlug
|
||||||
} = formData;
|
} = formData;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user