payload-authjs
Version:
A Payload CMS 3 plugin for Auth.js 5
48 lines (47 loc) • 2.37 kB
JavaScript
import { getProviderMetadata } from "../authjs/utils/config";
import { generateUsersCollection } from "./collection";
export const authjsPlugin = (pluginOptions)=>(incomingConfig)=>{
const config = {
...incomingConfig
};
// If the plugin is disabled, return the config as is
if (pluginOptions.enabled === false) {
return config;
}
// Generate users collection
config.collections = config.collections ?? [];
generateUsersCollection(config.collections, pluginOptions);
// Add custom components to admin
config.admin = {
...config.admin,
components: {
...config.admin?.components,
afterLogin: [
...config.admin?.components?.afterLogin ?? [],
// Add the SignInButton component to the admin login page (only if the user collection is the admin user collection)
...(()=>{
if (incomingConfig.admin?.user !== (pluginOptions.userCollectionSlug ?? "users")) {
return [];
}
if (pluginOptions.components?.SignInButton === false) {
return [];
}
const signInButtonOptions = pluginOptions.components?.SignInButton;
return pluginOptions.authjsConfig.providers.map((provider)=>getProviderMetadata(provider)).filter((provider)=>[
"oauth",
"oidc"
].includes(provider.type)).map((provider)=>({
path: "payload-authjs/components#SignInButton",
clientProps: {
icon: typeof signInButtonOptions?.icon === "function" ? signInButtonOptions.icon(provider) : signInButtonOptions?.icon,
text: typeof signInButtonOptions?.text === "function" ? signInButtonOptions.text(provider) : signInButtonOptions?.text,
provider
}
}));
})()
]
}
};
return config;
};
//# sourceMappingURL=plugin.js.map