diesel
diesel2d ago

Issues with better-auth component

Hi All, I am having some issues where I get these types of errors in a bunch of places on operations with the authClient with better-auth using the Component for Convex. It happens on the listOrganizations and the createOrganization specifically, so mabye its some issue with how i set up the organizations plugin? [Error: Uncaught TypeError: Cannot read properties of undefined (reading 'fields') at isUniqueField (../../node_modules/@convex-dev/better-auth/src/client/adapterUtils.ts:67:9) at <anonymous> (../../node_modules/@convex-dev/better-auth/src/client/adapterUtils.ts:487:19) at find [as find] (<anonymous>) at paginate (../../node_modules/@convex-dev/better-auth/src/client/adapterUtils.ts:487:19) at handler (../../node_modules/@convex-dev/better-auth/src/client/index.ts:198:5)
// Create Better Auth instance with organization plugin for multi-tenancy
export const createAuth = (
ctx: GenericCtx<DataModel>,
{ optionsOnly } = { optionsOnly: false },
) => {
return betterAuth({
// Disable logging when createAuth is called just to generate options
logger: {
disabled: optionsOnly,
},
baseURL: siteUrl,
database: authComponent.adapter(ctx),

// Email/password authentication (non-verified for now)
emailAndPassword: {
enabled: true,
requireEmailVerification: false,
// Optional: add password requirements
minPasswordLength: 8,
},

// User table configuration
user: {
// Additional user fields beyond Better Auth defaults
additionalFields: {
// Platform-level role - stored in userProfiles instead
// Don't add custom fields here as they cause validation errors
// Use triggers to sync to userProfiles table
},
},

plugins: [
// The Convex plugin is required for Convex compatibility
convex(),

// Organization plugin for multi-company support with custom RBAC
organization({
// Access Control configuration
ac,

// Custom roles with fine-grained permissions
roles: {
owner: ownerRole,
admin: adminRole,
contest_admin: contestAdminRole,
},

// Set creator as owner by default
creatorRole: "owner",

// We don't need teams - companies are top-level organizations
teams: {
enabled: false,
},
}),
],
});
};
// Create Better Auth instance with organization plugin for multi-tenancy
export const createAuth = (
ctx: GenericCtx<DataModel>,
{ optionsOnly } = { optionsOnly: false },
) => {
return betterAuth({
// Disable logging when createAuth is called just to generate options
logger: {
disabled: optionsOnly,
},
baseURL: siteUrl,
database: authComponent.adapter(ctx),

// Email/password authentication (non-verified for now)
emailAndPassword: {
enabled: true,
requireEmailVerification: false,
// Optional: add password requirements
minPasswordLength: 8,
},

// User table configuration
user: {
// Additional user fields beyond Better Auth defaults
additionalFields: {
// Platform-level role - stored in userProfiles instead
// Don't add custom fields here as they cause validation errors
// Use triggers to sync to userProfiles table
},
},

plugins: [
// The Convex plugin is required for Convex compatibility
convex(),

// Organization plugin for multi-company support with custom RBAC
organization({
// Access Control configuration
ac,

// Custom roles with fine-grained permissions
roles: {
owner: ownerRole,
admin: adminRole,
contest_admin: contestAdminRole,
},

// Set creator as owner by default
creatorRole: "owner",

// We don't need teams - companies are top-level organizations
teams: {
enabled: false,
},
}),
],
});
};
3 Replies
Convex Bot
Convex Bot2d ago
Thanks for posting in <#1088161997662724167>. Reminder: If you have a Convex Pro account, use the Convex Dashboard to file support tickets. - Provide context: What are you trying to achieve, what is the end-user interaction, what are you seeing? (full error message, command output, etc.) - Use search.convex.dev to search Docs, Stack, and Discord all at once. - Additionally, you can post your questions in the Convex Community's <#1228095053885476985> channel to receive a response from AI. - Avoid tagging staff unless specifically instructed. Thank you!
erquhart
erquhart2d ago
Out of the box only the supported plugins work. To use plugins not on that list, use Local Install.
diesel
dieselOP2d ago
Sounds good Ty

Did you find this page helpful?