diff --git a/backend/package-lock.json b/backend/package-lock.json index 4e0e706..ff60309 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -6,6 +6,7 @@ "": { "dependencies": { "body-parser": "^1.19.0", + "cookie-parser": "^1.4.5", "cors": "^2.8.5", "express": "^4.17.1", "express-session": "^1.17.1", @@ -128,6 +129,18 @@ "node": ">= 0.6" } }, + "node_modules/cookie-parser": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", + "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", + "dependencies": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -955,6 +968,15 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, + "cookie-parser": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.5.tgz", + "integrity": "sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6" + } + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", diff --git a/backend/package.json b/backend/package.json index b004de5..403ae3d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,6 +1,7 @@ { "dependencies": { "body-parser": "^1.19.0", + "cookie-parser": "^1.4.5", "cors": "^2.8.5", "express": "^4.17.1", "express-session": "^1.17.1", diff --git a/backend/routes/room.js b/backend/routes/room.js index 271a713..cfaf1ac 100644 --- a/backend/routes/room.js +++ b/backend/routes/room.js @@ -4,8 +4,8 @@ var router = express.Router(); var RoomModel = require('../schemas/room'); //creating new room in db -router.post('/add', async function (req, res) { - let id; +router.post('/add', function (req, res) { + console.log(req.session); RoomModel.findOne( { full: false, started: false }, function (err, results) { if (err) { console.log(err); @@ -18,7 +18,12 @@ router.post('/add', async function (req, res) { players: [req.body.name], }); newRoom.save() - .then(()=>{res.send({id: results._id}); }) + .then( async function(){ + req.session.roomId = newRoom._id; + req.session.player = req.body.name; + + res.send({id: newRoom._id}); + }) .catch(err => res.status(400).json('Error: ' + err)) }else { @@ -36,11 +41,21 @@ router.post('/add', async function (req, res) { console.log(err) } else{ + req.session.roomId = results._id; + req.session.player = req.body.name; console.log("Updated Docs : ", docs); } } - ); - res.send({id: results._id}); + ).then(()=>{ + req.session.roomId = results._id; + req.session.player = req.body.name; + console.log(req.session); + res.send({ + id: results._id, + player: req.session.player + }); + }); + } }); diff --git a/backend/server.js b/backend/server.js index 53414ca..616f08a 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,15 +1,37 @@ const express = require("express"); const cors = require('cors'); +const cookieParser = require('cookie-parser') const session = require('express-session') const bodyParser = require('body-parser'); + const app = express(); +app.use(cookieParser()); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); -app.use(cors()); +app.set('trust proxy', 1) +app.use(cors({ + origin: [ + 'localhost:3001', + 'http://localhost:3001', + 'https://localhost:3001' + ], + credentials: true, +})) const PORT = 3000|| process.env.PORT; +//SESSION CONFIG +app.use(session({ + secret: 'lalala', + resave: false, + saveUninitialized: true, + cookie: { + httpOnly: false, + secure: false,}, +})); + + //DATABASE CONFIG const mongoose = require("mongoose"); const CONNECTION_URI = require("./credentials.js").MONGODB_URL; @@ -27,6 +49,10 @@ mongoose.connect(CONNECTION_URI, { const roomRoutes = require("./routes/room"); const playerRoutes = require("./routes/player"); +app.post('/', (req,res)=>{ + res.send("ok"); +}) + app.use('/player', playerRoutes); app.use('/room', roomRoutes); diff --git a/package.json b/package.json index 789897a..c681d99 100644 --- a/package.json +++ b/package.json @@ -36,5 +36,6 @@ "last 1 firefox version", "last 1 safari version" ] - } + }, + "proxy": "http://localhost:3000" } diff --git a/src/App.js b/src/App.js index 6bc4c52..aaec924 100644 --- a/src/App.js +++ b/src/App.js @@ -1,13 +1,27 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; +import axios from 'axios'; import { BrowserRouter as Router , Redirect } from 'react-router-dom'; import NameInput from './components/NameInput'; function App() { + useEffect(()=>{ + axios.post('http://localhost:3000', { + credentials: 'include', + mode: 'cors' + }) + .then((response)=> response.id!=null ? setRedirect(true): null); + }) const [id, setId] = useState('') const [redirect, setRedirect] = useState(false) const idCallback = (id)=>{ setId(id); - setRedirect(true); + + axios.post('http://localhost:3000', { + credentials: 'include', + mode: 'cors', + headers: { "Content-Type": "application/json" }, + }) + .then(()=> setRedirect(true)) } return (