Fix admin creation check in authentication logic: Re-enable the check for existing admin presence before creating a new admin, ensuring proper error handling for duplicate admin creation. Update cloud condition to account for admin presence.

This commit is contained in:
Mauricio Siu
2026-01-30 20:37:39 -06:00
parent 1f33b0fd24
commit c4515a2ca4
+24 -24
View File
@@ -111,11 +111,11 @@ export const { handler, api } = betterAuth({
const isAdminPresent = await db.query.member.findFirst({ const isAdminPresent = await db.query.member.findFirst({
where: eq(schema.member.role, "owner"), where: eq(schema.member.role, "owner"),
}); });
// if (isAdminPresent) { if (isAdminPresent) {
// throw new APIError("BAD_REQUEST", { throw new APIError("BAD_REQUEST", {
// message: "Admin is already created", message: "Admin is already created",
// }); });
// } }
} }
} }
}, },
@@ -155,27 +155,27 @@ export const { handler, api } = betterAuth({
} }
} }
// if (IS_CLOUD || !isAdminPresent) { if (IS_CLOUD || !isAdminPresent) {
await db.transaction(async (tx) => { await db.transaction(async (tx) => {
const organization = await tx const organization = await tx
.insert(schema.organization) .insert(schema.organization)
.values({ .values({
name: "My Organization", name: "My Organization",
ownerId: user.id, ownerId: user.id,
createdAt: new Date(), createdAt: new Date(),
}) })
.returning() .returning()
.then((res) => res[0]); .then((res) => res[0]);
await tx.insert(schema.member).values({ await tx.insert(schema.member).values({
userId: user.id, userId: user.id,
organizationId: organization?.id || "", organizationId: organization?.id || "",
role: "owner", role: "owner",
createdAt: new Date(), createdAt: new Date(),
isDefault: true, // Mark first organization as default isDefault: true, // Mark first organization as default
});
}); });
}); }
// }
}, },
}, },
}, },