@@ -10,6 +10,10 @@ interface OAuthPluginOptions {
10
10
emailField : string ;
11
11
emailConfirmedField ?: string ;
12
12
adapters : OAuth2Adapter [ ] ;
13
+ openSignup ?: {
14
+ enabled ?: boolean ;
15
+ defaultFieldValues ?: Record < string , any > ;
16
+ } ;
13
17
}
14
18
15
19
export default class OAuthPlugin extends AdminForthPlugin {
@@ -22,7 +26,15 @@ export default class OAuthPlugin extends AdminForthPlugin {
22
26
if ( ! options . emailField ) {
23
27
throw new Error ( 'OAuthPlugin: emailField is required' ) ;
24
28
}
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
+ } ;
26
38
}
27
39
28
40
async modifyResourceConfig ( adminforth : IAdminForth , resource : AdminForthResource ) {
@@ -87,7 +99,7 @@ export default class OAuthPlugin extends AdminForthPlugin {
87
99
authUrl : `${ adapter . getAuthUrl ( ) } &state=${ state } ` ,
88
100
provider : adapter . constructor . name ,
89
101
baseUrl,
90
- icon : adapter . getIcon ?. ( ) || ''
102
+ icon : adapter . getIcon ( )
91
103
}
92
104
} ) ;
93
105
} ) ;
@@ -162,13 +174,19 @@ export default class OAuthPlugin extends AdminForthPlugin {
162
174
] ) ;
163
175
164
176
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
+
165
185
// When creating a new user, set emailConfirmedField to true if it's configured
166
186
const createData : any = {
167
- id : randomUUID ( ) ,
168
- created_at : new Date ( ) . toISOString ( ) ,
169
187
[ this . options . emailField ] : userInfo . email ,
170
- role : 'user ' ,
171
- password_hash : ''
188
+ [ this . adminforth . config . auth . passwordHashField ] : '' ,
189
+ ... this . options . openSignup . defaultFieldValues
172
190
} ;
173
191
174
192
if ( this . options . emailConfirmedField ) {
0 commit comments