@@ -146,56 +146,61 @@ router.post('/admin/user/insert', common.restrict, (req, res) => {
146
146
// set the account to admin if using the setup form. Eg: First user account
147
147
let urlParts = url . parse ( req . header ( 'Referer' ) ) ;
148
148
149
- let isAdmin = false ;
150
- if ( urlParts . path === '/admin/setup' ) {
151
- isAdmin = true ;
152
- }
149
+ // Check number of users
150
+ db . users . count ( { } , ( err , userCount ) => {
151
+ let isAdmin = false ;
153
152
154
- let doc = {
155
- usersName : req . body . usersName ,
156
- userEmail : req . body . userEmail ,
157
- userPassword : bcrypt . hashSync ( req . body . userPassword , 10 ) ,
158
- isAdmin : isAdmin
159
- } ;
160
-
161
- // check for existing user
162
- db . users . findOne ( { 'userEmail' : req . body . userEmail } , ( err , user ) => {
163
- if ( user ) {
164
- // user already exists with that email address
165
- console . error ( colors . red ( 'Failed to insert user, possibly already exists: ' + err ) ) ;
166
- req . session . message = 'A user with that email address already exists' ;
167
- req . session . messageType = 'danger' ;
168
- res . redirect ( '/admin/user/new' ) ;
169
- return ;
153
+ // if no users, setup user as admin
154
+ if ( userCount === 0 ) {
155
+ isAdmin = true ;
170
156
}
171
- // email is ok to be used.
172
- db . users . insert ( doc , ( err , doc ) => {
173
- // show the view
174
- if ( err ) {
175
- if ( doc ) {
176
- console . error ( colors . red ( 'Failed to insert user: ' + err ) ) ;
177
- req . session . message = 'User exists' ;
178
- req . session . messageType = 'danger' ;
179
- res . redirect ( '/admin/user/edit/' + doc . _id ) ;
180
- return ;
181
- }
182
- console . error ( colors . red ( 'Failed to insert user: ' + err ) ) ;
183
- req . session . message = 'New user creation failed' ;
157
+
158
+ let doc = {
159
+ usersName : req . body . usersName ,
160
+ userEmail : req . body . userEmail ,
161
+ userPassword : bcrypt . hashSync ( req . body . userPassword , 10 ) ,
162
+ isAdmin : isAdmin
163
+ } ;
164
+
165
+ // check for existing user
166
+ db . users . findOne ( { 'userEmail' : req . body . userEmail } , ( err , user ) => {
167
+ if ( user ) {
168
+ // user already exists with that email address
169
+ console . error ( colors . red ( 'Failed to insert user, possibly already exists: ' + err ) ) ;
170
+ req . session . message = 'A user with that email address already exists' ;
184
171
req . session . messageType = 'danger' ;
185
172
res . redirect ( '/admin/user/new' ) ;
186
173
return ;
187
174
}
188
- req . session . message = 'User account inserted' ;
189
- req . session . messageType = 'success' ;
190
-
191
- // if from setup we add user to session and redirect to login.
192
- // Otherwise we show users screen
193
- if ( urlParts . path === '/admin/setup' ) {
194
- req . session . user = req . body . userEmail ;
195
- res . redirect ( '/admin/login' ) ;
196
- return ;
197
- }
198
- res . redirect ( '/admin/users' ) ;
175
+ // email is ok to be used.
176
+ db . users . insert ( doc , ( err , doc ) => {
177
+ // show the view
178
+ if ( err ) {
179
+ if ( doc ) {
180
+ console . error ( colors . red ( 'Failed to insert user: ' + err ) ) ;
181
+ req . session . message = 'User exists' ;
182
+ req . session . messageType = 'danger' ;
183
+ res . redirect ( '/admin/user/edit/' + doc . _id ) ;
184
+ return ;
185
+ }
186
+ console . error ( colors . red ( 'Failed to insert user: ' + err ) ) ;
187
+ req . session . message = 'New user creation failed' ;
188
+ req . session . messageType = 'danger' ;
189
+ res . redirect ( '/admin/user/new' ) ;
190
+ return ;
191
+ }
192
+ req . session . message = 'User account inserted' ;
193
+ req . session . messageType = 'success' ;
194
+
195
+ // if from setup we add user to session and redirect to login.
196
+ // Otherwise we show users screen
197
+ if ( urlParts . path === '/admin/setup' ) {
198
+ req . session . user = req . body . userEmail ;
199
+ res . redirect ( '/admin/login' ) ;
200
+ return ;
201
+ }
202
+ res . redirect ( '/admin/users' ) ;
203
+ } ) ;
199
204
} ) ;
200
205
} ) ;
201
206
} ) ;
0 commit comments