Skip to content

Commit 5a73975

Browse files
committed
fix: Add open signup configuration for OAuth plugin
1 parent 7f854cc commit 5a73975

File tree

1 file changed

+24
-6
lines changed

1 file changed

+24
-6
lines changed

index.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ interface OAuthPluginOptions {
1010
emailField: string;
1111
emailConfirmedField?: string;
1212
adapters: OAuth2Adapter[];
13+
openSignup?: {
14+
enabled?: boolean;
15+
defaultFieldValues?: Record<string, any>;
16+
};
1317
}
1418

1519
export default class OAuthPlugin extends AdminForthPlugin {
@@ -22,7 +26,15 @@ export default class OAuthPlugin extends AdminForthPlugin {
2226
if (!options.emailField) {
2327
throw new Error('OAuthPlugin: emailField is required');
2428
}
25-
this.options = options;
29+
30+
// Set default values for openSignup
31+
this.options = {
32+
...options,
33+
openSignup: {
34+
enabled: options.openSignup?.enabled ?? false,
35+
defaultFieldValues: options.openSignup?.defaultFieldValues ?? {},
36+
}
37+
};
2638
}
2739

2840
async modifyResourceConfig(adminforth: IAdminForth, resource: AdminForthResource) {
@@ -87,7 +99,7 @@ export default class OAuthPlugin extends AdminForthPlugin {
8799
authUrl: `${adapter.getAuthUrl()}&state=${state}`,
88100
provider: adapter.constructor.name,
89101
baseUrl,
90-
icon: adapter.getIcon?.() || ''
102+
icon: adapter.getIcon()
91103
}
92104
});
93105
});
@@ -162,13 +174,19 @@ export default class OAuthPlugin extends AdminForthPlugin {
162174
]);
163175

164176
if (!user) {
177+
// Check if open signup is enabled
178+
if (!this.options.openSignup?.enabled) {
179+
return {
180+
error: 'User not found and open signup is disabled',
181+
redirectTo: '/login'
182+
};
183+
}
184+
165185
// When creating a new user, set emailConfirmedField to true if it's configured
166186
const createData: any = {
167-
id: randomUUID(),
168-
created_at: new Date().toISOString(),
169187
[this.options.emailField]: userInfo.email,
170-
role: 'user',
171-
password_hash: ''
188+
[this.adminforth.config.auth.passwordHashField]: '',
189+
...this.options.openSignup.defaultFieldValues
172190
};
173191

174192
if (this.options.emailConfirmedField) {

0 commit comments

Comments
 (0)