const fs = require ('fs'); try { var data = JSON.parse (fs.readFileSync ('./data.json').toString ()); log.write ('Opened data file'); } catch (error) { var data = { users: [] }; fs.writeFileSync ('./data.json', JSON.stringify (data, null, 2)); } const persistData = () => { var content = { users: [] }; Object.keys (users).forEach ((user) => { content.users.push ({ username: user, password: users[user].password, vlan: users[user].vlan }); }); fs.writeFileSync ('./data.json', JSON.stringify (content, null, 2)); } users = {}; data.users.forEach ((e) => { users[e.username] = { password: e.password, vlan: e.vlan } }); module.exports = { authUser: (username, password) => { if (config.mac_auth_only) { username = username.toLowerCase ().replace (/[:-]/g, ''); password = password.toLowerCase ().replace (/[:-]/g, ''); } if (users[username] && users[username].password == password) { return { vlan: users[username].vlan }; } else { return false; } }, createUser: (payload, callback) => { try { payload = JSON.parse (payload); var username = payload.username; var password = payload.password; if (config.mac_auth_only) { username = username.toLowerCase ().replace (/[:-]/g, ''); password = password.toLowerCase ().replace (/[:-]/g, ''); } var description = payload.description || ""; var vlan = payload.vlan; users[username] = { password: password, vlan: vlan, description: description }; persistData (); callback ("OK\n\n", null); } catch (error) { callback (null, "Error"); } }, getUsers: (callback) => { try { var response = Object.keys (users).map ((username) => { return { username: username, password: users[username].password, description: users[username].description, vlan: users[username].vlan } }); callback (response, null); } catch (error) { log.write (error); callback (null, "Not found"); } }, getUser: (username, callback) => { if (config.mac_auth_only) { username = username.toLowerCase ().replace (/[:-]/g, ''); } try { var user = users[username]; callback (user, null); } catch (error) { callback (null, error); } }, deleteUser: (username, callback) => { if (config.mac_auth_only) { username = username.toLowerCase ().replace (/[:-]/g, ''); } if (users[username]) { try { delete users[username]; persistData (); callback ("OK\n\n", null); } catch (error) { callback (null, "Error"); } } else { callback (null, "Not found"); } } }