Skip to content

Commit 5caad22

Browse files
authored
Merge pull request #186 from MCS-Lite/admin-user
delete isActive: true feature
2 parents 5e295f0 + 70b125b commit 5caad22

File tree

9 files changed

+301
-9
lines changed

9 files changed

+301
-9
lines changed

adminServer/controllers/service.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var $admin = require('../../configs/admin');
1010

1111

1212
module.exports = function ($db) {
13+
var users = $db.users;
1314

1415
var startService = function(req, res, next) {
1516
global.startMCSLiteService();
@@ -95,12 +96,33 @@ module.exports = function ($db) {
9596
return res.send(200, { data: JSON.stringify(global.logs) });
9697
};
9798

99+
var resetData = function(req, res, next) {
100+
users.retrieveAdminUsers()
101+
.then(function(data) {
102+
var adminUsersContent = '';
103+
104+
data.forEach(function(k, v) {
105+
adminUsersContent += k.toString() + '\n';
106+
});
107+
108+
fs.writeFileSync(path.resolve(__dirname, '../../db/users.json'), adminUsersContent, 'utf8');
109+
fs.writeFileSync(path.resolve(__dirname, '../../db/datapoints.json'), '', 'utf8');
110+
fs.writeFileSync(path.resolve(__dirname, '../../db/devices.json'), '', 'utf8');
111+
fs.writeFileSync(path.resolve(__dirname, '../../db/prototypes.json'), '', 'utf8');
112+
return res.send(200, "success.");
113+
})
114+
.catch(function(err) {
115+
return (400, err);
116+
});
117+
};
118+
98119
return {
99120
serviceStatus: false,
100121
retrieveServiceSetting: retrieveServiceSetting,
101122
editServiceSetting: editServiceSetting,
102123
resetServiceSetting: resetServiceSetting,
103124
getServiceIp: getServiceIp,
125+
resetData: resetData,
104126
getServiceLog: getServiceLog,
105127
startService: startService,
106128
stopService: stopService,

adminServer/controllers/users.js

Lines changed: 148 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,10 +266,6 @@ module.exports = function ($db) {
266266
});
267267
};
268268

269-
var retrieveUsers = function(req, res, next) {
270-
271-
};
272-
273269
var createAnAdmin = function(req, res, next) {
274270
return users.checkDefaultUserCount()
275271
.then(function(status) {
@@ -299,6 +295,149 @@ module.exports = function ($db) {
299295
});
300296
};
301297

298+
var editUser = function(req, res, next) {
299+
if (req.body.password) {
300+
return users.changePassword(req.params.userId, req.body.password)
301+
.then(function(data) {
302+
return res.send(200, data);
303+
})
304+
.catch(function(err) {
305+
return res.send(400, err);
306+
});
307+
} else if (req.body.hasOwnProperty('isActive')) {
308+
return users.editUser({
309+
userId: req.params.userId,
310+
isActive: !req.body.isActive,
311+
}, {
312+
isActive: req.body.isActive,
313+
})
314+
.then(function(data) {
315+
return res.send(200, data);
316+
})
317+
.catch(function(err) {
318+
return res.send(400, err);
319+
});
320+
}
321+
};
322+
323+
var deleteUser = function(req, res, next) {
324+
var userId = [];
325+
326+
if (req.params.userId) userId = req.params.userId.split(',');
327+
if (req.body.userId) userId = req.body.userId;
328+
329+
return users.deleteUser({
330+
userId: userId,
331+
})
332+
.then(function(data) {
333+
return res.send(200, "success.");
334+
})
335+
.catch(function(err) {
336+
return res.send(400, err);
337+
});
338+
};
339+
340+
var addNewUser = function(req, res, next) {
341+
return users.addNewUser({
342+
userName: req.body.userName,
343+
email: req.body.email,
344+
password: req.body.password,
345+
isAdmin: req.body.isAdmin,
346+
})
347+
.then(function(data) {
348+
return res.send(200, data);
349+
})
350+
.catch(function(err) {
351+
return res.send(400, err);
352+
})
353+
};
354+
355+
var retrieveUsers = function(req, res, next) {
356+
var query = {
357+
// isActive: true,
358+
};
359+
360+
var userName = req.query.userName;
361+
var email = req.query.email;
362+
var q = req.query.q;
363+
364+
if (q) {
365+
query['$or'] = [];
366+
query['$or'].push({email: { $regex: new RegExp(q)}});
367+
query['$or'].push({userName: { $regex: new RegExp(q)}});
368+
}
369+
370+
if (userName) {
371+
query.userName = { $regex: new RegExp(userName) };
372+
}
373+
374+
if (email) {
375+
query.email = { $regex: new RegExp(email) };
376+
}
377+
378+
var sort = req.query.sort;
379+
var skip = req.query.skip;
380+
var limit = req.query.limit;
381+
382+
return users.retrieveUserByQuery(query, sort, skip, limit)
383+
.then(function(data) {
384+
return res.send(200, data);
385+
})
386+
.catch(function(err) {
387+
return res.send(400, err);
388+
});
389+
390+
};
391+
392+
var batchAddNewUserByCSV = function(req, res, next) {
393+
var rawData;
394+
var content = [];
395+
396+
if (Object.keys(req.body).length === 0){
397+
return res.send(400, { message: 'Raw body is null.' });
398+
} else {
399+
rawData = Object.keys(req.body)[0].toString().split('\n');
400+
}
401+
402+
rawData.forEach(function(key, item) {
403+
if (key.split(',').length === 3) {
404+
content.push({
405+
userName: key.split(',')[0],
406+
email: key.split(',')[1],
407+
password: key.split(',')[2],
408+
});
409+
}
410+
});
411+
var queue = [];
412+
content.forEach(function(key, item) {
413+
queue.push(users.addNewUser({
414+
userName: key.userName,
415+
email: key.email,
416+
password: key.password,
417+
isAdmin: true,
418+
})
419+
);
420+
});
421+
422+
return Promise.all(queue)
423+
.then(function(values) {
424+
return res.send(200, 'success.');
425+
})
426+
.catch(function(err) {
427+
return res.send(400, err);
428+
});
429+
};
430+
431+
var clearAllUserExceptAdmin = function(req, res, next) {
432+
return users.clearAllUser()
433+
.then(function() {
434+
return res.send(200, 'success.');
435+
})
436+
.catch(function(err) {
437+
return res.send(400, err);
438+
});
439+
};
440+
302441
return {
303442
login: login,
304443
loginInterface: loginInterface,
@@ -307,6 +446,11 @@ module.exports = function ($db) {
307446
createAnAdmin: createAnAdmin,
308447
checkAdminExist: checkAdminExist,
309448
signupInterface: signupInterface,
449+
editUser: editUser,
450+
deleteUser: deleteUser,
451+
addNewUser: addNewUser,
452+
batchAddNewUserByCSV: batchAddNewUserByCSV,
453+
clearAllUserExceptAdmin: clearAllUserExceptAdmin,
310454
};
311455

312456
}

adminServer/routers/index.js

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,45 @@ module.exports = function($db, $app, $admin) {
8989
handler: usersController.checkCookies,
9090
};
9191

92+
this.deleteUser = {
93+
path: $admin.apiRoute + '/users/:userId',
94+
methods: ['delete'],
95+
middleware: [$app.oauth.authorise()],
96+
handler: usersController.deleteUser,
97+
};
98+
99+
this.deleteUserByPost = {
100+
path: $admin.apiRoute + '/users/delete',
101+
methods: ['post'],
102+
middleware: [$app.oauth.authorise()],
103+
handler: usersController.deleteUser,
104+
};
105+
106+
this.editUser = { // Include disable User & changeUserPassword
107+
path: $admin.apiRoute + '/users/:userId',
108+
methods: ['put'],
109+
middleware: [$app.oauth.authorise()],
110+
handler: usersController.editUser,
111+
};
112+
113+
this.retrieveUsers = {
114+
path: $admin.apiRoute + '/users',
115+
methods: ['get'],
116+
middleware: [$app.oauth.authorise()],
117+
handler: usersController.retrieveUsers,
118+
};
119+
120+
this.addNewUser = {
121+
path: $admin.apiRoute + '/users',
122+
methods: ['post'],
123+
middleware: [$app.oauth.authorise()],
124+
handler: usersController.addNewUser,
125+
};
126+
127+
// this.addNewUserByCSV = {
128+
129+
// };
130+
92131
this.startService = {
93132
path: $admin.apiRoute + '/service/start',
94133
methods: ['get'],
@@ -147,4 +186,18 @@ module.exports = function($db, $app, $admin) {
147186
handler: serviceController.getServiceLog,
148187
};
149188

189+
this.batchAddNewUserByCSV = {
190+
path: $admin.apiRoute + '/users.csv',
191+
methods: ['post'],
192+
middleware: [$app.oauth.authorise(), bodyParser.raw({ type: 'text/csv' })],
193+
handler: usersController.batchAddNewUserByCSV,
194+
};
195+
196+
this.clearAllUserExceptAdmin = {
197+
path: $admin.apiRoute + '/clear',
198+
methods: ['delete'],
199+
middleware: [$app.oauth.authorise()],
200+
handler: usersController.clearAllUserExceptAdmin,
201+
};
202+
150203
};

build.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ cp -R index.js ./build/index.js
6161
cp -R package.json ./build/package.json
6262

6363
mkdir out
64-
nwbuild -p win32,win64,osx64 -v 0.20.3 ./build -o ./out
64+
65+
nwbuild -p win32,win64,osx64,linux32,linux64 -v 0.20.3 ./build -o ./out
6566

6667
cd ./out/mcs-lite-app/win64
6768
mkdir mcs-lite-app

client/jest_0/haste-map-93c4f97b492abaaa5110a54e6044db6b-903928398444b55569973182aa8b75c3

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

client/mcs-layout.pot

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
msgid ""
22
msgstr ""
3-
"POT-Creation-Date: 2017-08-07T02:15:04.594Z\n"
3+
4+
"POT-Creation-Date: 2017-08-07T04:03:31.042Z\n"
45
"Content-Type: text/plain; charset=UTF-8\n"
56
"Content-Transfer-Encoding: 8bit\n"
67
"MIME-Version: 1.0\n"

client/messages/translations.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

db/users.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{"userName":"Laurence Abbott","email":"[email protected]","password":"9005371724f8483141728b781db0ebb02d67b524c7a1038548a3eb2b088eabc0","userId":"B1gphzpb8l","isActive":true,"createdAt":1484014261096,"updatedAt":1484014261096,"_id":"00fN53TU44g1lxlc"}
2-
{"userName":"Dangelo Morissette","email":"[email protected]","password":"8ffb1dd70e71ab72c19b08e6b0946d70b9f43f65c6a3ca45cd21c5dd9fdd336d","userId":"rJWUuuab8e","isActive":true,"createdAt":1484015725872,"updatedAt":1484015725872,"_id":"02bJIOwzgyIV14Hy","isAdmin":true}
32
{"userName":"iamblue","email":"[email protected]","password":"8ffb1dd70e71ab72c19b08e6b0946d70b9f43f65c6a3ca45cd21c5dd9fdd336d","userId":"HktV1dVvl","isActive":true,"createdAt":1485238064541,"updatedAt":1485238064541,"_id":"04ri9WybCIl51Pj4","isAdmin":true}
43
{"userName":"Guiseppe Shanahan","email":"[email protected]","password":"8ffb1dd70e71ab72c19b08e6b0946d70b9f43f65c6a3ca45cd21c5dd9fdd336d","userId":"BybnaATbIx","isActive":true,"createdAt":1484017347942,"updatedAt":1484017347942,"_id":"06ASzrQBHNZfYixK","isAdmin":true}
54
{"userName":"Coy Ziemann","email":"[email protected]","password":"8ffb1dd70e71ab72c19b08e6b0946d70b9f43f65c6a3ca45cd21c5dd9fdd336d","userId":"B1ZkdseUx","isActive":true,"createdAt":1483941849282,"updatedAt":1483941849282,"_id":"07icGAWMYwvID7M1","isAdmin":true}

0 commit comments

Comments
 (0)