@@ -143,6 +143,7 @@ export class LoginProvider {
143143 var res2 = {
144144 wshost : _url ,
145145 domain : Config . domain ,
146+ allow_user_registration : Config . allow_user_registration ,
146147 allow_personal_nodered : Config . allow_personal_nodered ,
147148 namespace : Config . namespace ,
148149 nodered_domain_schema : Config . nodered_domain_schema
@@ -293,10 +294,21 @@ export class LoginProvider {
293294 return done ( null , tuser ) ;
294295 }
295296 user = await User . FindByUsername ( username ) ;
296- if ( user === undefined || user === null ) { return done ( null , false ) ; }
297- if ( ! ( await user . ValidatePassword ( password ) ) ) {
298- Audit . LoginFailed ( username , "weblogin" , "local" , "" ) ;
299- return done ( null , false ) ;
297+ if ( user === undefined || user === null ) {
298+ if ( ! Config . allow_user_registration ) {
299+ return done ( null , false ) ;
300+ }
301+ user = new User ( ) ; user . name = username ; user . username = username ;
302+ await user . SetPassword ( password ) ;
303+ user = await Config . db . InsertOne ( user , "users" , 0 , false , TokenUser . rootToken ( ) ) ;
304+ var users : Role = await Role . FindByNameOrId ( "users" , TokenUser . rootToken ( ) ) ;
305+ users . AddMember ( user ) ;
306+ await users . Save ( TokenUser . rootToken ( ) )
307+ } else {
308+ if ( ! ( await user . ValidatePassword ( password ) ) ) {
309+ Audit . LoginFailed ( username , "weblogin" , "local" , "" ) ;
310+ return done ( null , false ) ;
311+ }
300312 }
301313 tuser = new TokenUser ( user ) ;
302314 Audit . LoginSuccess ( tuser , "weblogin" , "local" , "" ) ;
0 commit comments