@@ -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
1519export 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