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') {
// Validate common fields
req.checkBody('id', 'Member ID is required').notEmpty();
req.sanitize('id').trim();
req.sanitize('id').escape();
if (req.method === 'POST') { // Validate optional fields
if (req.body.auth !== undefined) {
req.checkBody('auth', 'Authorization state must be boolean').isBoolean();
req.sanitize('auth').trim();
req.sanitize('auth').escape();
}
req.checkBody('id', 'Member ID is required').notEmpty(); if (req.body.activeBridge !== undefined) {
req.sanitize('id').trim(); req.checkBody('activeBridge', 'activeBridge state must be boolean').isBoolean();
req.sanitize('id').escape(); req.sanitize('activeBridge').trim();
req.sanitize('activeBridge').escape();
}
if (req.body.auth) { if (req.body.name !== undefined) {
req.checkBody('auth', 'Authorization state must be boolean').isBoolean(); req.sanitize('name').trim();
req.sanitize('auth').trim(); req.sanitize('name').escape();
req.sanitize('auth').escape(); }
errors = req.validationErrors(); // Collect validation errors
const errors = req.validationErrors();
if (!errors) { if (errors) {
const auth = return res.status(400).json({ errors: errors.array() });
{ }
authorized: req.body.auth
};
// Simultaneously process all provided fields
if (req.body.auth !== undefined) {
const auth = { authorized: req.body.auth };
try { try {
const mem = await zt.member_object(req.params.nwid, req.body.id, auth); 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' });
} }
} }
} else if (req.body.activeBridge) {
req.checkBody('activeBridge', 'activeBridge state must be boolean').isBoolean();
req.sanitize('activeBridge').trim();
req.sanitize('activeBridge').escape();
errors = req.validationErrors();
if (!errors) {
const activeBridge =
{
activeBridge: req.body.activeBridge
};
if (req.body.activeBridge !== undefined) {
const activeBridge = { activeBridge: req.body.activeBridge };
try { try {
const mem = await zt.member_object(req.params.nwid, req.body.id, activeBridge); await zt.member_object(req.params.nwid, req.body.id, activeBridge);
} catch (err) { } catch (err) {
throw err; console.error('Error processing activeBridge:', err);
return res.status(500).json({ error: 'Failed to update activeBridge state' });
} }
} }
} else if (req.body.name) {
req.sanitize('name').trim();
req.sanitize('name').escape();
errors = req.validationErrors(); if (req.body.name !== undefined) {
if (!errors) {
try { try {
const ret = await storage.setItem(req.body.id, req.body.name); await storage.setItem(req.body.id, req.body.name);
} catch (err) { } catch (err) {
throw 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`);
} }
} else { // GET } catch (err) {
res.redirect("/controller/network/" + req.params.nwid + "#members"); 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) {