This commit is contained in:
Han Xiangyu 2024-11-28 20:40:36 +08:00 committed by GitHub
commit 7121765fd4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -627,77 +627,84 @@ exports.easy_post = async function(req, res) {
} }
// Easy members auth POST // Easy members auth POST
exports.members = async function(req, res) { exports.members = async function (req, res) {
const navigate = const navigate =
{ {
active: 'networks', active: 'networks',
whence: '/controller/networks' whence: '/controller/networks'
} }
let errors = null; try {
if (req.method === 'POST') { if (req.method === 'POST') {
// Validate common fields
req.checkBody('id', 'Member ID is required').notEmpty(); req.checkBody('id', 'Member ID is required').notEmpty();
req.sanitize('id').trim(); req.sanitize('id').trim();
req.sanitize('id').escape(); req.sanitize('id').escape();
if (req.body.auth) { // Validate optional fields
if (req.body.auth !== undefined) {
req.checkBody('auth', 'Authorization state must be boolean').isBoolean(); req.checkBody('auth', 'Authorization state must be boolean').isBoolean();
req.sanitize('auth').trim(); req.sanitize('auth').trim();
req.sanitize('auth').escape(); req.sanitize('auth').escape();
errors = req.validationErrors();
if (!errors) {
const auth =
{
authorized: req.body.auth
};
try {
const mem = await zt.member_object(req.params.nwid, req.body.id, auth);
} catch (err) {
throw err;
} }
}
} else if (req.body.activeBridge) { if (req.body.activeBridge !== undefined) {
req.checkBody('activeBridge', 'activeBridge state must be boolean').isBoolean(); req.checkBody('activeBridge', 'activeBridge state must be boolean').isBoolean();
req.sanitize('activeBridge').trim(); req.sanitize('activeBridge').trim();
req.sanitize('activeBridge').escape(); req.sanitize('activeBridge').escape();
errors = req.validationErrors();
if (!errors) {
const activeBridge =
{
activeBridge: req.body.activeBridge
};
try {
const mem = await zt.member_object(req.params.nwid, req.body.id, activeBridge);
} catch (err) {
throw err;
} }
}
} else if (req.body.name) { if (req.body.name !== undefined) {
req.sanitize('name').trim(); req.sanitize('name').trim();
req.sanitize('name').escape(); req.sanitize('name').escape();
}
errors = req.validationErrors(); // Collect validation errors
const errors = req.validationErrors();
if (errors) {
return res.status(400).json({ errors: errors.array() });
}
if (!errors) { // Simultaneously process all provided fields
if (req.body.auth !== undefined) {
const auth = { authorized: req.body.auth };
try { try {
const ret = await storage.setItem(req.body.id, req.body.name); await zt.member_object(req.params.nwid, req.body.id, auth);
} catch (err) { } catch (err) {
throw err; console.error('Error processing auth:', err);
return res.status(500).json({ error: 'Failed to update authorization state' });
} }
} }
if (req.body.activeBridge !== undefined) {
const activeBridge = { activeBridge: req.body.activeBridge };
try {
await zt.member_object(req.params.nwid, req.body.id, activeBridge);
} catch (err) {
console.error('Error processing activeBridge:', err);
return res.status(500).json({ error: 'Failed to update activeBridge state' });
} }
} else { // GET
res.redirect("/controller/network/" + req.params.nwid + "#members");
} }
}
if (req.body.name !== undefined) {
try {
await storage.setItem(req.body.id, req.body.name);
} catch (err) {
console.error('Error processing name:', err);
return res.status(500).json({ error: 'Failed to update name' });
}
}
// Return success after processing all fields
return res.status(200).json({ success: true });
} else {
return res.redirect(`/controller/network/${nwid}#members`);
}
} catch (err) {
console.error('Unexpected error:', err);
return res.status(500).json({ error: 'Internal server error', detail: err });
}
};
// Member delete GET or POST // Member delete GET or POST
exports.member_delete = async function(req, res) { exports.member_delete = async function(req, res) {