diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..572406b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +/node_modules +package-lock.json \ No newline at end of file diff --git a/DOCKERFILE b/DOCKERFILE index 1d804d2..df2d76c 100644 --- a/DOCKERFILE +++ b/DOCKERFILE @@ -1,7 +1,4 @@ FROM node:latest - WORKDIR /app - COPY . /app - -CMD ["npm", "run", "start"] \ No newline at end of file +CMD npm start \ No newline at end of file diff --git a/api/v1/admin/getUnverifiedUsers.js b/api/v1/admin/getUnverifiedUsers.js index de37355..6513e7b 100644 --- a/api/v1/admin/getUnverifiedUsers.js +++ b/api/v1/admin/getUnverifiedUsers.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {getUnverifiedUsers} = require("../../../libs/mysql.js") +const { getConnection, getUnverifiedUsers } = require("../../../libs/mysql.js") const router = express.Router(); @@ -26,7 +26,9 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "invalid token"}); } - const users = await getUnverifiedUsers(); + const connection = await getConnection(); + const users = await getUnverifiedUsers(connection); + connection.end(); res.status(200).send(users); }); diff --git a/api/v1/admin/verifyUser.js b/api/v1/admin/verifyUser.js index 69ccd56..5b2b8c8 100644 --- a/api/v1/admin/verifyUser.js +++ b/api/v1/admin/verifyUser.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {setVerified, getUser} = require("../../../libs/mysql.js") +const { getConnection, setVerified, getUser } = require("../../../libs/mysql.js") const router = express.Router(); @@ -26,7 +26,9 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "invalid token"}); } - const user = await getUser(username); + const connection = await getConnection(); + + const user = await getUser(connection, username); if (!user[0]) { return res.status(400).send({error: "invalid userid"}); @@ -37,6 +39,7 @@ router.post('/', async (req, res) => { } await setVerified(username); + connection.end() res.status(200).send({message: "user verified"}); }); diff --git a/api/v1/auth/login.js b/api/v1/auth/login.js index be3105f..78bf402 100644 --- a/api/v1/auth/login.js +++ b/api/v1/auth/login.js @@ -2,14 +2,16 @@ const express = require('express'); const jwt = require('jsonwebtoken'); const sha256 = require("sha256"); -const { getUser } = require("../../../libs/mysql"); +const { getConnection, getUser } = require("../../../libs/mysql"); const router = express.Router(); router.post('/', async (req, res) => { const {username, password} = req.body; - const user = await getUser(username); + const connection = await getConnection(); + + const user = await getUser(connection, username); if (!user[0]) { return res.status(400).send({error: "wrong login informations"}); diff --git a/api/v1/auth/register.js b/api/v1/auth/register.js index 77dc990..97a8310 100644 --- a/api/v1/auth/register.js +++ b/api/v1/auth/register.js @@ -1,7 +1,7 @@ const express = require('express'); const sha256 = require("sha256"); -const { getUser, addUser } = require("../../../libs/mysql"); +const { getConnection, getUser, addUser } = require("../../../libs/mysql"); const router = express.Router(); @@ -12,13 +12,16 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "invalid request"}); } - const user = await getUser(username); + const connection = await getConnection(); + + const user = await getUser(connection, username); if (user[0]) { return res.status(400).send({error: "user already exist"}); } - await addUser(username, name, lastname, sha256(password)); + await addUser(connection, username, name, lastname, sha256(password)); + connection.end(); res.status(200).send({message: "success"}); }); diff --git a/api/v1/games/addHelper.js b/api/v1/games/addHelper.js index 9465264..c7895dd 100644 --- a/api/v1/games/addHelper.js +++ b/api/v1/games/addHelper.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {addHelper, getGame} = require("../../../libs/mysql.js") +const { getConnection, addHelper, getGame } = require("../../../libs/mysql.js") const router = express.Router(); @@ -22,8 +22,10 @@ router.post('/', async (req, res) => { if (user.expiration < Date.now()) { return res.status(400).send({error: "token expired"}); } + + const connection = getConnection(); - const game = await getGame(gameid); + const game = await getGame(connection, gameid); if (!game[0]) { return res.status(400).send({error: "this game doesn't exist"}); @@ -33,7 +35,8 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "you are already an helper for this game"}); } - await addHelper(user.user.username, gameid); + await addHelper(connection, user.user.username, gameid); + connection.end(); } catch (error) { console.log(error); return res.status(400).send({error: "invalid token"}); diff --git a/api/v1/games/getGame.js b/api/v1/games/getGame.js index efdb2ab..f3f29de 100644 --- a/api/v1/games/getGame.js +++ b/api/v1/games/getGame.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {getGame} = require("../../../libs/mysql.js") +const { getConnection, getGame } = require("../../../libs/mysql.js") const router = express.Router(); @@ -26,7 +26,9 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "invalid token"}); } - const game = await getGame(gameid) + const connection = getConnection(); + const game = await getGame(connection, gameid) + connection.end(); if (!game[0]) { return res.status(400).send({error: "this game doesn't exist in the data base"}) diff --git a/api/v1/games/getHelpers.js b/api/v1/games/getHelpers.js index b004fcb..b22442b 100644 --- a/api/v1/games/getHelpers.js +++ b/api/v1/games/getHelpers.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {getHelpers} = require("../../../libs/mysql.js") +const { getConnection, getHelpers } = require("../../../libs/mysql.js") const router = express.Router(); @@ -26,7 +26,9 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "invalid token"}); } + const connection = getConnection(); const helpers = await getHelpers(gameid) + connection.end(); if (!helpers[0]) { return res.status(400).send({error: "this game doesn't exist in the data base"}) diff --git a/api/v1/games/getall.js b/api/v1/games/getall.js index 178641a..21563dd 100644 --- a/api/v1/games/getall.js +++ b/api/v1/games/getall.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {getGames} = require("../../../libs/mysql.js") +const { getConnection, getGames } = require("../../../libs/mysql.js") const router = express.Router(); @@ -22,7 +22,9 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "invalid token"}); } + const connection = getConnection(); const games = await getGames(); + connection.end(); res.status(200).send(games); }); diff --git a/api/v1/games/removeHelper.js b/api/v1/games/removeHelper.js index 2298967..5231de1 100644 --- a/api/v1/games/removeHelper.js +++ b/api/v1/games/removeHelper.js @@ -1,7 +1,7 @@ const express = require('express'); const jwt = require('jsonwebtoken'); -const {removeHelper, getGame} = require("../../../libs/mysql.js") +const { getConnection, removeHelper, getGame } = require("../../../libs/mysql.js") const router = express.Router(); @@ -23,6 +23,7 @@ router.post('/', async (req, res) => { return res.status(400).send({error: "token expired"}); } + const connection = getConnection(); const game = await getGame(gameid); if (!game[0]) { @@ -34,6 +35,7 @@ router.post('/', async (req, res) => { } await removeHelper(user.user.username, gameid); + connection.end() } catch { return res.status(400).send({error: "invalid token"}); } diff --git a/libs/mysql.js b/libs/mysql.js index 6721206..a69f65f 100644 --- a/libs/mysql.js +++ b/libs/mysql.js @@ -1,19 +1,21 @@ const mysql = require("mysql"); -const con = mysql.createConnection({ - host: process.env.MysqlHost, - user: process.env.MysqlUser, - password: process.env.MysqlPassword, - database: process.env.MysqlDb, -}); +export function getConnection() { + return mysql.createConnection({ + host: process.env.MysqlHost, + user: process.env.MysqlUser, + password: process.env.MysqlPassword, + database: process.env.MysqlDb, + }); +} // +-----------------------------------+ // | GAMES | // +-----------------------------------+ -function getGames() { +export function getGames(connection) { return new Promise((resolve, reject) => { - con.query( + connection.query( `SELECT id, title, subtitle, type, players, duration, ages FROM games`, (error, result) => { if (error) { @@ -25,9 +27,9 @@ function getGames() { }); } -function getGame(gameid) { +export function getGame(connection, gameid) { return new Promise((resolve, reject) => { - con.query( + connection.query( `SELECT * FROM games WHERE id = "${gameid}"`, (error, result) => { if (error) { @@ -39,9 +41,9 @@ function getGame(gameid) { }) } -function addHelper(username, gameid) { +export function addHelper(connection, username, gameid) { return new Promise((resolve, reject) => { - con.query( + connection.query( `UPDATE games SET helpers = JSON_ARRAY_APPEND(helpers, '$', "${username}") WHERE id = ${gameid}`, (error, result) => { if (error) { @@ -53,9 +55,9 @@ function addHelper(username, gameid) { }) } -function removeHelper(username, gameid) { +export function removeHelper(connection, username, gameid) { return new Promise((resolve, reject) => { - con.query( + connection.query( `UPDATE games SET helpers = JSON_REMOVE(helpers, JSON_UNQUOTE(JSON_SEARCH(helpers, 'one', "${username}"))) WHERE id = ${gameid}`, (error, result) => { if (error) { @@ -67,9 +69,9 @@ function removeHelper(username, gameid) { }); } -function getHelpers(gameid) { +export function getHelpers(connection, gameid) { return new Promise((resolve, reject) => { - con.query( + connection.query( `SELECT helpers FROM games WHERE id = "${gameid}"`, (error, result) => { if (error) { @@ -85,9 +87,9 @@ function getHelpers(gameid) { // | AUTH | // +-----------------------------------+ -function getUser(username) { +export function getUser(connection, username) { return new Promise((resolve, reject) => { - con.query( + connection.query( `SELECT * FROM users WHERE username = "${username}"`, (error, result) => { if (error) { @@ -98,9 +100,9 @@ function getUser(username) { }) } -function addUser(username, name, lastname, password) { +export function addUser(connection, username, name, lastname, password) { return new Promise((resolve, reject) => { - con.query( + connection.query( `INSERT INTO users(username, name, lastname, password) VALUES("${username}", "${name}", "${lastname}", "${password}")`, (error, result) => { if (error) { @@ -115,9 +117,9 @@ function addUser(username, name, lastname, password) { // | ADMIN | // +-----------------------------------+ -function getUnverifiedUsers() { +export function getUnverifiedUsers(connection) { return new Promise((resolve, reject) => { - con.query( + connection.query( `SELECT * FROM users WHERE verified = 0`, (error, result) => { if (error) { @@ -128,9 +130,9 @@ function getUnverifiedUsers() { }) } -function setVerified(username) { +export function setVerified(connection, username) { return new Promise((resolve, reject) => { - con.query( + connection.query( `UPDATE users SET verified = 1 WHERE username = "${username}"`, (error, result) => { if (error) { @@ -139,18 +141,4 @@ function setVerified(username) { resolve(result); }) }) -} - -module.exports = { - getGames, - getGame, - addHelper, - removeHelper, - getHelpers, - - getUser, - addUser, - - getUnverifiedUsers, - setVerified, -}; \ No newline at end of file +} \ No newline at end of file