@payload-auth/better-auth-plugin
Version:
A Payload CMS plugin for Better Auth
52 lines (51 loc) • 2.58 kB
JavaScript
import { getAuthTables } from 'better-auth/db';
/**
* Determines which collections are required based on the BetterAuth options and plugins
*/ export function getRequiredCollectionSlugs({ logTables, pluginOptions, sanitizedBAOptions }) {
// Always include the base required collections (User, Account, Session, Verification)
const userCollectionSlug = pluginOptions.users?.slug ?? 'users';
const accountCollectionSlug = pluginOptions.accounts?.slug ?? 'accounts';
const sessionCollectionSlug = pluginOptions.sessions?.slug ?? 'sessions';
const verificationCollectionSlug = pluginOptions.verifications?.slug ?? 'verifications';
const requiredCollectionSlugs = new Set([
userCollectionSlug,
accountCollectionSlug,
sessionCollectionSlug,
verificationCollectionSlug
]);
// If we have better auth options, use getAuthTables to determine additional tables needed
if (sanitizedBAOptions) {
try {
// Get the tables required by the auth configuration
const tables = getAuthTables({
...sanitizedBAOptions
});
const plugins = sanitizedBAOptions.plugins ?? [];
if (logTables) {
console.log('Better Auth plugins:', plugins.map((plugin)=>plugin.id));
console.log('Better Auth tables required:', Object.keys(tables).map((key)=>tables[key].modelName));
}
// Add all table slugs to the required collections set
Object.values(tables).forEach((table)=>{
if (table.modelName) {
requiredCollectionSlugs.add(table.modelName);
}
});
} catch (error) {
console.error('Error determining required auth tables:', error);
console.warn('Falling back to base collections only');
// Log the plugins that were attempted to be used
if (sanitizedBAOptions.plugins?.length ?? 0 > 0) {
console.warn('Plugins that may have caused the error:', sanitizedBAOptions.plugins?.map((plugin)=>{
// Type-safe way to get plugin identification
return typeof plugin === 'object' && plugin !== null && 'name' in plugin ? plugin.name : 'unnamed plugin';
}));
}
}
}
// if (enable_debug_logs) {
// console.log('Required collection slugs: ', Array.from(requiredCollectionSlugs))
// }
return requiredCollectionSlugs;
}
//# sourceMappingURL=get-required-collection-slugs.js.map