diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index ba91167578278724d969a41cf09489c11d8207a3..c2ef01f840ee61d27f880e8af2b1f66989a0aadd 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -68,19 +68,7 @@ bool sbbs_t::logon()
 	client_on(client_socket,&client,TRUE /* update */);
 
 #ifdef JAVASCRIPT
-	if(js_cx!=NULL) {
-		/* user object */
-		if(js_CreateUserObject(js_cx, js_glob, &cfg, "user", useron.number)==NULL) 
-			lprintf("!JavaScript ERROR creating user object");
-
-		/* file_area object */
-		if(js_CreateFileAreaObject(js_cx, js_glob, &cfg, &useron, "")==NULL) 
-			lprintf("!JavaScript ERROR creating file_area object");
-
-		/* msg_area object */
-		if(js_CreateMsgAreaObject(js_cx, js_glob, &cfg, &useron, subscan)==NULL) 
-			lprintf("!JavaScript ERROR creating msg_area object");
-	}
+	js_create_user_objects();
 #endif
 
 	if(useron.rest&FLAG('Q'))
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 7a3938b231e6397b5f8b82677dfb2ca96f8b383b..38afdc7122cde43b42f24e732eba0a53e7826937 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -556,6 +556,24 @@ bool sbbs_t::js_init()
 	return(true);
 }
 
+void sbbs_t::js_create_user_objects(void)
+{
+	if(js_cx==NULL)
+		return;
+
+	/* user object */
+	if(js_CreateUserObject(js_cx, js_glob, &cfg, "user", useron.number)==NULL) 
+		lprintf("!JavaScript ERROR creating user object");
+
+	/* file_area object */
+	if(js_CreateFileAreaObject(js_cx, js_glob, &cfg, &useron, "")==NULL) 
+		lprintf("!JavaScript ERROR creating file_area object");
+
+	/* msg_area object */
+	if(js_CreateMsgAreaObject(js_cx, js_glob, &cfg, &useron, subscan)==NULL) 
+		lprintf("!JavaScript ERROR creating msg_area object");
+}
+
 #endif	/* JAVASCRIPT */
 
 #ifdef _WINSOCKAPI_
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index ce02b187c4894161b716e3369771ae866b236cc4..18e537960217f05292f7af589b7b89761384ec22 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -483,6 +483,10 @@ void sbbs_t::newuser()
 	sprintf(str,"%suser/%04u.sig",cfg.data_dir,useron.number); /* delete signature */
 	remove(str);
 
+#ifdef JAVASCRIPT
+	js_create_user_objects();
+#endif
+
 	if(cfg.newuser_mod[0])
 		exec_bin(cfg.newuser_mod,&main_csi);
 	user_event(EVENT_NEWUSER);
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index fa50ab741aa5af1dfe4937a576ddbc9070bde627..95aeb4f2b17cb18ba7122efd86508ce76416d3a8 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -186,6 +186,7 @@ public:
 	ulong		js_loop;
 	long		js_execfile(char *fname);
 	bool		js_init(void);
+	void		js_create_user_objects(void);
 
 #endif