Working on some bugs.

This commit is contained in:
charlesgauthereau
2025-07-27 21:26:31 +02:00
parent f9dc15ba73
commit 85047e7509
107 changed files with 971 additions and 2203 deletions
+9 -9
View File
@@ -1,8 +1,8 @@
import { createAuthClient } from "better-auth/react";
import {createAuthClient} from "better-auth/react";
import { adminClient, organizationClient } from "better-auth/client/plugins";
import { env } from "@/env.mjs";
import { ac, user, admin as adminRole, pending, superadmin, orgAdmin, orgMember, orgOwner } from "./permissions";
import {adminClient, organizationClient} from "better-auth/client/plugins";
import {env} from "@/env.mjs";
import {ac, user, admin as adminRole, pending, superadmin, orgAdmin, orgMember, orgOwner} from "./permissions";
export const authClient = createAuthClient({
baseURL: env.NEXT_PUBLIC_PROJECT_URL,
@@ -10,15 +10,15 @@ export const authClient = createAuthClient({
organizationClient({
ac,
roles: {
orgOwner,
orgAdmin,
orgMember,
owner: orgOwner,
admin: orgAdmin,
member: orgMember,
},
}),
adminClient({
ac,
roles: {
adminRole,
admin: adminRole,
user,
pending,
superadmin,
@@ -27,4 +27,4 @@ export const authClient = createAuthClient({
],
});
export const { signIn, signOut, signUp, useSession, listAccounts, admin } = authClient;
export const {signIn, signOut, signUp, useSession, listAccounts, admin} = authClient;
+35 -35
View File
@@ -79,6 +79,7 @@ export const auth = betterAuth({
const userCount = (await db.select({count: count()}).from(drizzleDb.schemas.user))[0].count;
const role = userCount === 0 ? "superadmin" : "pending";
return {
data: {
...user,
@@ -87,24 +88,23 @@ export const auth = betterAuth({
};
},
async after(user, context) {
const userCount = (await db.select({count: count()}).from(drizzleDb.schemas.user))[0].count;
// const userCount = (await db.select({count: count()}).from(drizzleDb.schemas.user))[0].count;
if (userCount === 1) {
const defaultOrgSlug = "default"; // change this if your default org has a different slug
const defaultOrg = await db.query.organization.findFirst({
where: eq(drizzleDb.schemas.organization.slug, defaultOrgSlug),
const defaultOrgSlug = "default"; // change this if your default org has a different slug
const defaultOrg = await db.query.organization.findFirst({
where: eq(drizzleDb.schemas.organization.slug, defaultOrgSlug),
});
if (defaultOrg) {
await db.insert(drizzleDb.schemas.member).values({
userId: user.id,
organizationId: defaultOrg.id,
role: "owner",
});
if (defaultOrg) {
await db.insert(drizzleDb.schemas.member).values({
userId: user.id,
organizationId: defaultOrg.id,
role: "orgOwner",
});
} else {
console.warn("Default organization not found. Cannot assign member.");
}
} else {
console.warn("Default organization not found. Cannot assign member.");
}
},
},
},
@@ -118,26 +118,26 @@ export const auth = betterAuth({
where: eq(drizzleDb.schemas.member.userId, userId),
});
if (!memberships.length) {
const defaultOrgSlug = "default";
const defaultOrg = await db.query.organization.findFirst({
where: eq(drizzleDb.schemas.organization.slug, defaultOrgSlug),
});
if (!defaultOrg) {
throw new Error("No organization found. Cannot assign member.");
}
await db.insert(drizzleDb.schemas.member).values({
userId,
organizationId: defaultOrg.id,
role: "member",
});
memberships = await db.query.member.findMany({
where: eq(drizzleDb.schemas.member.userId, userId),
});
}
// if (!memberships.length) {
// const defaultOrgSlug = "default";
// const defaultOrg = await db.query.organization.findFirst({
// where: eq(drizzleDb.schemas.organization.slug, defaultOrgSlug),
// });
//
// if (!defaultOrg) {
// throw new Error("No organization found. Cannot assign member.");
// }
//
// await db.insert(drizzleDb.schemas.member).values({
// userId,
// organizationId: defaultOrg.id,
// role: "member",
// });
//
// memberships = await db.query.member.findMany({
// where: eq(drizzleDb.schemas.member.userId, userId),
// });
// }
return {
data: {
+4 -1
View File
@@ -1,6 +1,6 @@
import { createAccessControl } from "better-auth/plugins/access";
import { defaultStatements, adminAc } from "better-auth/plugins/admin/access";
import { defaultStatements as orgDefaultStatements, adminAc as orgAdminAc, ownerAc as orgOwnerAc } from "better-auth/plugins/organization/access";
import { defaultStatements as orgDefaultStatements, adminAc as orgAdminAc, ownerAc as orgOwnerAc, memberAc as orgMemberAc } from "better-auth/plugins/organization/access";
const statement = {
...defaultStatements,
@@ -19,6 +19,8 @@ const superadmin = ac.newRole({
...adminAc.statements,
...orgAdminAc.statements,
...orgOwnerAc.statements,
...orgMemberAc.statements
});
const admin = ac.newRole({
@@ -56,6 +58,7 @@ const orgOwner = ac.newRole({
project: ["create", "update", "delete"],
...orgAdminAc.statements,
...orgOwnerAc.statements,
...orgMemberAc.statements
});
export { ac, admin, superadmin, user, pending, orgAdmin, orgMember, orgOwner };