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": {
"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",

View File

@ -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",

View File

@ -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
});
});
}
});

View File

@ -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);

View File

@ -36,5 +36,6 @@
"last 1 firefox 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 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 (
<Router>