feat: Add default organization selection (#1991)

This commit is contained in:
HarikrishnanD
2025-10-31 20:21:49 +05:30
parent dadef000d5
commit a14cc09933
7 changed files with 216 additions and 7 deletions

View File

@@ -94,6 +94,7 @@ export const member = pgTable("member", {
role: text("role").notNull().$type<"owner" | "member" | "admin">(),
createdAt: timestamp("created_at").notNull(),
teamId: text("team_id"),
isDefault: boolean("is_default").notNull().default(false),
// Permissions
canCreateProjects: boolean("canCreateProjects").notNull().default(false),
canAccessToSSHKeys: boolean("canAccessToSSHKeys").notNull().default(false),

View File

@@ -165,6 +165,7 @@ const { handler, api } = betterAuth({
organizationId: organization?.id || "",
role: "owner",
createdAt: new Date(),
isDefault: true, // Mark first organization as default
});
});
}
@@ -174,14 +175,28 @@ const { handler, api } = betterAuth({
session: {
create: {
before: async (session) => {
const member = await db.query.member.findFirst({
where: eq(schema.member.userId, session.userId),
orderBy: desc(schema.member.createdAt),
// First try to find the default organization for this user
let member = await db.query.member.findFirst({
where: and(
eq(schema.member.userId, session.userId),
eq(schema.member.isDefault, true),
),
with: {
organization: true,
},
});
// If no default is set, fallback to the most recently created organization
if (!member) {
member = await db.query.member.findFirst({
where: eq(schema.member.userId, session.userId),
orderBy: desc(schema.member.createdAt),
with: {
organization: true,
},
});
}
return {
data: {
...session,