write-ups-challenges-2021-2022/moderated/db.js
2021-12-03 00:33:26 +01:00

100 lines
1.8 KiB
JavaScript

let STORE = {
posts: [],
users: [],
nextFreeUserId: 0,
nextFreePostId: 0
}
function resetStore() {
STORE = {
posts: [],
users: [],
nextFreeUserId: 1,
nextFreePostId: 1
};
addPost("IGCTF{BigTechWillnOtSiLenceUs}", 1);
addUser("moderator", "916027bd3a6e3d7131f98d9997db1931a146c2b97f2eb7de75b9bbfb9ed91fb432742e7aea628eafb5ad56027132f7b71fa0");
}
function createPost(body, by, id) {
return {
id,
by,
body
}
}
function createUser(username, password, id) {
return {
username,
password,
id
}
}
function addPost(body, by) {
STORE.posts.push(createPost(body, by, STORE.nextFreePostId))
STORE.nextFreePostId += 1
}
function addUser(username, password) {
STORE.users.push(createUser(username, password, STORE.nextFreeUserId))
STORE.nextFreeUserId += 1
}
function checkLogin(username, password) {
let found = false;
STORE.users.forEach((user) => {
if (user.username === username && user.password === password) {
found = user.id;
}
});
return found;
}
function registerUser(username, password) {
let found = false;
STORE.users.forEach((user) => {
if (user.username == username) {
found = true;
}
});
if (found) {
return "user already exists";
} else {
addUser(username, password);
return null;
}
}
function getPostsBy(userId) {
return STORE.posts.filter((post) => post.by === userId);
}
function getPostById(id) {
return STORE.posts.filter((post) => post.id == id)[0]
}
function isModerator(id) {
return id === 1;
}
function getAllPosts() {
return STORE.posts;
}
module.exports = {
resetStore,
addPost,
addUser,
checkLogin,
registerUser,
getPostsBy,
getPostById,
isModerator,
getAllPosts,
}