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 (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; 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\n\n"); } }, 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) { callback (null, "Not found\n\n"); } }, getUser: (username, callback) => { try { callback (users[username], null); } catch (error) { callback (null, "Not found\n\n"); } }, updateUser: (payload, callback) => { payload = JSON.parse (payload); callback ("OK\n\n", null); }, deleteUser: (username, callback) => { try { delete users[username]; persistData (); callback ("OK\n\n", null); } catch (error) { callback (null, "Error\n\n"); } } }