shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
100 lines (95 loc) • 2.83 kB
JavaScript
const user = appRequire('plugins/user/index');
const refUser = appRequire('plugins/webgui_ref/user');
const account = appRequire('plugins/account/index');
exports.getOneUser = async (req, res) => {
try {
const userId = +req.params.userId;
const userInfo = await user.getOne(userId);
const userAccount = await account.getAccount();
userInfo.account = userAccount.filter(f => {
return f.userId === +userId;
});
const ref = await refUser.getRefSourceUser(userId);
userInfo.ref = ref;
return res.send(userInfo);
} catch(err) {
console.log(err);
res.status(403).end();
}
};
exports.getOneAdmin = (req, res) => {
const userId = req.params.userId;
user.getOneAdmin(userId).then(success => {
return res.send(success);
}).catch(err => {
console.log(err);
res.status(403).end();
});
};
exports.getUsers = (req, res) => {
const page = +req.query.page || 1;
const pageSize = +req.query.pageSize || 20;
const search = req.query.search || '';
const sort = req.query.sort || 'id_asc';
const type = Array.isArray(req.query.type) ? req.query.type : [req.query.type || ''];
const group = req.adminInfo.id === 1 ? +req.query.group : req.adminInfo.group;
user.getUserAndPaging({
page,
pageSize,
search,
sort,
type,
group,
}).then(success => {
success.users = success.users.map(m => {
return {
id: m.id,
type: m.type,
email: m.email,
lastLogin: m.lastLogin,
username: m.username,
port: m.port,
};
});
return res.send(success);
}).catch(err => {
console.log(err);
res.status(403).end();
});
};
exports.addUser = (req, res) => {
req.checkBody('email', 'Invalid email').notEmpty();
req.checkBody('password', 'Invalid password').notEmpty();
req.checkBody('type', 'Invalid type').isIn(['normal', 'admin']);
req.getValidationResult().then(result => {
if(result.isEmpty()) {
const email = req.body.email;
const password = req.body.password;
const group = req.adminInfo.id === 1 ? 0 : req.adminInfo.group;
const type = req.adminInfo.id === 1 ? req.body.type: 'normal' ;
return user.add({
username: email,
email,
password,
type,
group,
});
}
result.throw();
}).then(success => {
return res.send(success);
}).catch(err => {
console.log(err);
res.status(403).end();
});
};
exports.editUserComment = (req, res) => {
const userId = +req.params.userId;
const comment = req.body.comment;
user.edit({ id: userId }, { comment }).then(success => {
res.send('success');
}).catch(err => {
console.log(err);
res.status(403).end();
});
};