Updated "defaultOrgId" and "defaultOrgSlug" to "defaultAuthOrgId" and "defaultAuthOrgSlug"

This commit is contained in:
Daniel Hougaard
2024-06-24 19:10:22 +02:00
parent 91bdd7ea6a
commit 2d98560255
11 changed files with 33 additions and 36 deletions
@@ -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);
} }
}); });
} }
+1 -1
View File
@@ -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>;
+3 -3
View File
@@ -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;
}; };
+2 -2
View File
@@ -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 = {
+3 -3
View File
@@ -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);
+2 -2
View File
@@ -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&apos;s your LDAP Login? What&apos;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;