sessions added

This commit is contained in:
Wenszel 2021-03-16 20:16:56 +01:00
parent 47dc0848ca
commit 526a97268e
6 changed files with 88 additions and 9 deletions

View File

@ -6,6 +6,7 @@
"": { "": {
"dependencies": { "dependencies": {
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.17.1", "express": "^4.17.1",
"express-session": "^1.17.1", "express-session": "^1.17.1",
@ -128,6 +129,18 @@
"node": ">= 0.6" "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": { "node_modules/cookie-signature": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "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", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" "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": { "cookie-signature": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",

View File

@ -1,6 +1,7 @@
{ {
"dependencies": { "dependencies": {
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
"cookie-parser": "^1.4.5",
"cors": "^2.8.5", "cors": "^2.8.5",
"express": "^4.17.1", "express": "^4.17.1",
"express-session": "^1.17.1", "express-session": "^1.17.1",

View File

@ -4,8 +4,8 @@ var router = express.Router();
var RoomModel = require('../schemas/room'); var RoomModel = require('../schemas/room');
//creating new room in db //creating new room in db
router.post('/add', async function (req, res) { router.post('/add', function (req, res) {
let id; console.log(req.session);
RoomModel.findOne( { full: false, started: false }, function (err, results) { RoomModel.findOne( { full: false, started: false }, function (err, results) {
if (err) { if (err) {
console.log(err); console.log(err);
@ -18,7 +18,12 @@ router.post('/add', async function (req, res) {
players: [req.body.name], players: [req.body.name],
}); });
newRoom.save() 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)) .catch(err => res.status(400).json('Error: ' + err))
}else { }else {
@ -36,11 +41,21 @@ router.post('/add', async function (req, res) {
console.log(err) console.log(err)
} }
else{ else{
req.session.roomId = results._id;
req.session.player = req.body.name;
console.log("Updated Docs : ", docs); console.log("Updated Docs : ", docs);
} }
} }
); ).then(()=>{
res.send({id: results._id}); req.session.roomId = results._id;
req.session.player = req.body.name;
console.log(req.session);
res.send({
id: results._id,
player: req.session.player
});
});
} }
}); });

View File

@ -1,15 +1,37 @@
const express = require("express"); const express = require("express");
const cors = require('cors'); const cors = require('cors');
const cookieParser = require('cookie-parser')
const session = require('express-session') const session = require('express-session')
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const app = express(); const app = express();
app.use(cookieParser());
app.use(bodyParser.urlencoded({ app.use(bodyParser.urlencoded({
extended: true extended: true
})); }));
app.use(bodyParser.json()); 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; const PORT = 3000|| process.env.PORT;
//SESSION CONFIG
app.use(session({
secret: 'lalala',
resave: false,
saveUninitialized: true,
cookie: {
httpOnly: false,
secure: false,},
}));
//DATABASE CONFIG //DATABASE CONFIG
const mongoose = require("mongoose"); const mongoose = require("mongoose");
const CONNECTION_URI = require("./credentials.js").MONGODB_URL; const CONNECTION_URI = require("./credentials.js").MONGODB_URL;
@ -27,6 +49,10 @@ mongoose.connect(CONNECTION_URI, {
const roomRoutes = require("./routes/room"); const roomRoutes = require("./routes/room");
const playerRoutes = require("./routes/player"); const playerRoutes = require("./routes/player");
app.post('/', (req,res)=>{
res.send("ok");
})
app.use('/player', playerRoutes); app.use('/player', playerRoutes);
app.use('/room', roomRoutes); app.use('/room', roomRoutes);

View File

@ -36,5 +36,6 @@
"last 1 firefox version", "last 1 firefox version",
"last 1 safari version" "last 1 safari version"
] ]
} },
"proxy": "http://localhost:3000"
} }

View File

@ -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 { BrowserRouter as Router , Redirect } from 'react-router-dom';
import NameInput from './components/NameInput'; import NameInput from './components/NameInput';
function App() { 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 [id, setId] = useState('')
const [redirect, setRedirect] = useState(false) const [redirect, setRedirect] = useState(false)
const idCallback = (id)=>{ const idCallback = (id)=>{
setId(id); setId(id);
setRedirect(true);
axios.post('http://localhost:3000', {
credentials: 'include',
mode: 'cors',
headers: { "Content-Type": "application/json" },
})
.then(()=> setRedirect(true))
} }
return ( return (
<Router> <Router>