diff --git a/conf.json b/conf.json
new file mode 100644
index 0000000..9742678
--- /dev/null
+++ b/conf.json
@@ -0,0 +1,22 @@
+{
+ "port": 5000,
+ "sessionSecret": "super_duper_secret_secret",
+ "users": [
+ {
+ "username": "jeff",
+ "password": "bb75cb47ec1c1132d25bf2afbc3e10ea0181748c9bdef8e0909f2cbabd4cad57",
+ "id": 1,
+ "salt": "4a9cbd94309329e9591b60a3def16d10724cb89444deee357a3eb0dd1e95d683",
+ "admin": true,
+ "api": "39c75cfe9b367ccf2bf1fe5451e1f7a966f653abb827db6bb96a2f532776df49"
+ },
+ {
+ "username": "josh",
+ "api": "5fb6cc61e5589b302b7383d98e7412cde8d04491a6e5d765445d334331a752e7",
+ "id": 2,
+ "salt": "4d7159f4d6aa4ee3467a13ef7a7a3ec17ae4b560756673c21eeee8bc887ab3c9",
+ "password": "320142ed202563b462b744f221cbc236cb042efda47b550395a32920f0dd937c",
+ "admin": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configManager.js b/configManager.js
index f568902..405d06f 100644
--- a/configManager.js
+++ b/configManager.js
@@ -1,13 +1,20 @@
-module.exports =
- {
+const fileIO = require('./fileIO');
+const CONFIG_FILE_NAME = "conf.json";
+
+const config = fileIO.getFileAsJSON(CONFIG_FILE_NAME);
+
+module.exports=
+{
getConfiguration: function()
{
-
+ return config;
},
syncToDisk: function()
{
-
+ fileIO.writeJSONToFile(CONFIG_FILE_NAME, config);
+ // console.log(config);
+ // console.log("Config Updated");
}
- };
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/html/header.html b/html/header.html
index fc3e180..a40c60a 100644
--- a/html/header.html
+++ b/html/header.html
@@ -38,7 +38,7 @@
-
- Users
+ Users
-
Videos
diff --git a/routes/index.js b/routes/index.js
index 114cc88..9cb195f 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -12,8 +12,8 @@ routes.get('/videos', videos);
const watch = require('./watch');
routes.get('/watch', watch);
-const users = require('./users');
-routes.get('/users', users);
+const user = require('./user');
+routes.use('/user', user);
const utils = require("../utils");
diff --git a/routes/users/addUser.js b/routes/user/addUser.js
similarity index 90%
rename from routes/users/addUser.js
rename to routes/user/addUser.js
index 17d40a2..8f35a09 100644
--- a/routes/users/addUser.js
+++ b/routes/user/addUser.js
@@ -13,7 +13,7 @@ routes.post('/', (request, result) =>
if(request.body.admin === 'on')
admin = true;
userUtils.addUser(request.body.username, request.body.password,admin);
- result.redirect('/users');
+ result.redirect('/user');
}
else
{
diff --git a/routes/users/edituser.js b/routes/user/edituser.js
similarity index 85%
rename from routes/users/edituser.js
rename to routes/user/edituser.js
index 5da14c9..5ae4c28 100644
--- a/routes/users/edituser.js
+++ b/routes/user/edituser.js
@@ -8,11 +8,12 @@ routes.post('/', (request, result) =>
{
if(utils.checkPrivilege(request) === utils.PRIVILEGE.ADMIN)
{
+ console.log("zat");
var admin = false;
if(request.body.admin === 'on')
admin = true;
userUtils.editUser(request.body.id, request.body.username, request.body.password,admin);
- result.redirect('/users');
+ result.redirect('/user');
}
else
{
diff --git a/routes/user/index.js b/routes/user/index.js
new file mode 100644
index 0000000..106801e
--- /dev/null
+++ b/routes/user/index.js
@@ -0,0 +1,46 @@
+const routes = require('express').Router();
+
+const utils = require("../../utils");
+
+const addUser = require('./addUser');
+routes.use('/addUser', addUser);
+
+const editUser = require('./edituser');
+routes.use('/edituser', editUser);
+
+const login = require('./login');
+routes.use('/login', login);
+
+
+const logout = require('./logout');
+routes.use('/logout', logout);
+
+const removeuser = require('./removeuser');
+routes.use('/removeuser', removeuser);
+
+
+const revokeAPI = require('./revokeAPI');
+routes.use('/revokeAPI', revokeAPI);
+
+
+const updateUser = require('./updateUser');
+routes.use('/updateUser', updateUser);
+
+
+
+const configLoader = require("../../configManager");
+
+function getUserInformation(templateContext, request)
+{
+ templateContext.users = configLoader.getConfiguration().users;
+ templateContext.apiKey = request.session.API;
+ templateContext.id = request.session.userID;
+ templateContext.username = request.session.username;
+}
+
+routes.get('/', (request, result) =>
+{
+ utils.renderHTML(request, result, "users.html", getUserInformation);
+});
+
+module.exports = routes;
\ No newline at end of file
diff --git a/routes/users/login.js b/routes/user/login.js
similarity index 100%
rename from routes/users/login.js
rename to routes/user/login.js
diff --git a/routes/users/logout.js b/routes/user/logout.js
similarity index 100%
rename from routes/users/logout.js
rename to routes/user/logout.js
diff --git a/routes/users/removeuser.js b/routes/user/removeuser.js
similarity index 78%
rename from routes/users/removeuser.js
rename to routes/user/removeuser.js
index 0875e57..c04a2ed 100644
--- a/routes/users/removeuser.js
+++ b/routes/user/removeuser.js
@@ -4,12 +4,12 @@ const utils = require("../../utils");
const userUtils = require("../../user");
-routes.get('/', (request, result) =>
+routes.post('/', (request, result) =>
{
if(utils.checkPrivilege(request) === utils.PRIVILEGE.ADMIN)
{
userUtils.removeUser(request.body.id);
- result.redirect('/users');
+ result.redirect('/user');
}
else
{
diff --git a/routes/users/revokeAPI.js b/routes/user/revokeAPI.js
similarity index 72%
rename from routes/users/revokeAPI.js
rename to routes/user/revokeAPI.js
index 9888e48..02b50e5 100644
--- a/routes/users/revokeAPI.js
+++ b/routes/user/revokeAPI.js
@@ -8,15 +8,15 @@ routes.post('/', (request, result) =>
{
if(utils.checkPrivilege(request) === utils.PRIVILEGE.ADMIN)
{
- userUtils.revokeAPI(request.body.username, config);
+ userUtils.revokeAPI(request.body.username);
request.session.API = userUtils.getAPIKEY(request.session.username);
}
- else if (checkPrivilege(request) === PRIVILEGE.MEMBER)
+ else if (utils.checkPrivilege(request) === PRIVILEGE.MEMBER)
{
userUtils.revokeAPI(request.session.username);
request.session.API = userUtils.getAPIKEY(request.session.username);
}
- result.redirect('/users');
+ result.redirect('/user');
});
module.exports = routes;
\ No newline at end of file
diff --git a/routes/users/updateUser.js b/routes/user/updateUser.js
similarity index 88%
rename from routes/users/updateUser.js
rename to routes/user/updateUser.js
index 62a0197..fa177f4 100644
--- a/routes/users/updateUser.js
+++ b/routes/user/updateUser.js
@@ -10,7 +10,7 @@ routes.post('/', (request, result) =>
{
var admin = false;
userUtils.editUser(request.session.userID, request.body.username, request.body.password,admin);
- result.redirect('/users');
+ result.redirect('/user');
}
else
{
diff --git a/routes/users/index.js b/routes/users/index.js
deleted file mode 100644
index 04049c5..0000000
--- a/routes/users/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const routes = require('express').Router();
-
-const utils = require("../../utils");
-
-const addUser = require('./addUser');
-routes.get('/addUser', addUser);
-
-const editUser = require('./edituser');
-routes.get('/edituser', editUser);
-
-const login = require('./login');
-routes.get('/login', login);
-
-
-const logout = require('./logout');
-routes.get('/logout', logout);
-
-const removeuser = require('./removeuser');
-routes.get('/removeuser', removeuser);
-
-
-const revokeAPI = require('./revokeAPI');
-routes.get('/revokeAPI', revokeAPI);
-
-
-const updateUser = require('./updateUser');
-routes.get('/updateUser', updateUser);
-
-routes.get('/', (request, result) =>
-{
- utils.renderHTML(request, result, "users.html", getUserInformation);
-});
-
-module.exports = routes;
\ No newline at end of file
diff --git a/server.js b/server.js
index 44e8d21..9d9839e 100644
--- a/server.js
+++ b/server.js
@@ -8,30 +8,36 @@ const fileIO = require('./fileIO');
const userUtils = require('./user.js');
+const configLoader = require('./configManager.js');
+
const recursive = require('./recursiveTraversal');
const filepreview = require('filepreview');
const fs = require('fs');
-const routes = require('./routes');
-const app = express();
+const app = express();
-app.use('/', routes);
+/**Initializes sessions for login */
+app.use(session({ secret: configLoader.getConfiguration().sessionSecret, cookie: { maxAge: 6000000 }}));
app.use(express.urlencoded());
app.use(express.json()); // if needed
+const routes = require('./routes');
+app.use('/', routes);
+
+
+
+
+// const CONFIG_FILE_NAME = "conf.json";
+// const config = fileIO.getFileAsJSON(CONFIG_FILE_NAME);
-const CONFIG_FILE_NAME = "conf.json";
-const config = fileIO.getFileAsJSON(CONFIG_FILE_NAME);
-/**Initializes sessions for login */
-app.use(session({ secret: config.sessionSecret, cookie: { maxAge: 6000000 }}));
// /** Template engine */
// const whiskers = require('whiskers');
@@ -74,13 +80,13 @@ var serverURL = "http://localhost:5000";
// });
// }
-function getUserInformation(templateContext, request)
-{
- templateContext.users = config.users;
- templateContext.apiKey = request.session.API;
- templateContext.id = request.session.userID;
- templateContext.username = request.session.username;
-}
+// function getUserInformation(templateContext, request)
+// {
+// templateContext.users = configLoader.getConfiguration().users;
+// templateContext.apiKey = request.session.API;
+// templateContext.id = request.session.userID;
+// templateContext.username = request.session.username;
+// }
// function getHomePageInformation(templateContext, request)
// {
@@ -369,4 +375,4 @@ app.get('/video/', function(request, result)
// });
-app.listen(config.port, () => console.log(`App listening on port ${config.port}!`));
\ No newline at end of file
+app.listen(configLoader.getConfiguration().port, () => console.log(`App listening on port ${configLoader.getConfiguration().port}!`));
\ No newline at end of file
diff --git a/user.js b/user.js
index 206b399..bf74783 100644
--- a/user.js
+++ b/user.js
@@ -116,6 +116,8 @@ module.exports =
{
users[index].api = generateRandomAPIKey();
}
+ console.log(users);
+ configManager.getConfiguration().users = users;
configManager.syncToDisk();
},
@@ -172,8 +174,9 @@ module.exports =
newUser.password = passObject.pass;
newUser.admin = admin;
users.push(newUser);
- configManager.syncToDisk();
+ configManager.getConfiguration().users = users;
+ configManager.syncToDisk();
return true;
},
@@ -189,7 +192,7 @@ module.exports =
{
for(var i = 0; i < users.length; i++)
{
- if (users[i].id=== id)
+ if (users[i].id + "" === id)
{
console.log("User account updated.");
users[i].username = userName;
@@ -200,7 +203,7 @@ module.exports =
users[i].password = passObj.pass;
}
}
-
+ configManager.getConfiguration().users = users;
configManager.syncToDisk();
},
@@ -215,7 +218,7 @@ module.exports =
{
return value.id + "" !== id
});
-
+ configManager.getConfiguration().users = users;
configManager.syncToDisk();
}
};
diff --git a/utils.js b/utils.js
index 95e1ba3..860a2bf 100644
--- a/utils.js
+++ b/utils.js
@@ -1,9 +1,13 @@
+const fileIO = require('./fileIO');
+
+
function fetchInTemplate(templateContext, templateKey, filename)
{
templateContext[templateKey] = fileIO.getFile(filename);
}
+
const PRIVILEGE = {NOBODY: 0, MEMBER: 1, ADMIN: 2};
/** Template engine */
@@ -19,10 +23,10 @@ module.exports =
prom.push(fileIO.getFile("./html/mainTemplate.html"));
prom.push(fetchInTemplate(templateContext, "header", "./html/header.html"));
prom.push(fetchInTemplate(templateContext, "footer", "./html/footer.html"));
- if(checkPrivilege(request) >= PRIVILEGE.MEMBER)
+ if(module.exports.checkPrivilege(request) >= PRIVILEGE.MEMBER)
{
templateContext.loggedIn = true;
- if(checkPrivilege(request) === PRIVILEGE.ADMIN)
+ if(module.exports.checkPrivilege(request) === PRIVILEGE.ADMIN)
templateContext.admin = true;
if(templateDependencyFunction !== null)
prom.push(templateDependencyFunction(templateContext, request));