formation před 3 roky
rodič
revize
1a07e1393c

+ 17 - 1
express-server/index.js

@@ -2,6 +2,7 @@ const express = require('express');
 const bodyparser = require('body-parser');
 const passport = require('passport');
 const mongoose = require('mongoose');
+const session = require('express-session');
 //const cors = require('cors');
 // const config = require('./config/db.config');
 
@@ -69,7 +70,22 @@ app.use(function(req, res, next) {
 // parse requests  body params
 app.use(bodyparser.json());
 app.use(bodyparser.urlencoded({extended: true}));
-//app.use(passport.initialize());
+//app.use(cookiePrser());
+app.use(express.urlencoded({ extended: true}));
+app.use(
+  session({
+    secret: "this_is_a_secret",
+    resave: true,
+    saveUnitialized: true,
+    rolling: true, // forces resetting of max age
+    cookie: {
+      maxAge: 360000,
+      secure: false // this should be true only when you don't want to show it for security reason
+    }
+  })
+);
+app.use(passport.initialize());
+//app.use(passport.session());
 
 //simple route
 app.use('/api/users', userRoutes );

+ 40 - 0
express-server/package-lock.json

@@ -681,6 +681,28 @@
       "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz",
       "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg=="
     },
+    "express-session": {
+      "version": "1.17.3",
+      "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.3.tgz",
+      "integrity": "sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==",
+      "requires": {
+        "cookie": "0.4.2",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~2.0.0",
+        "on-headers": "~1.0.2",
+        "parseurl": "~1.3.3",
+        "safe-buffer": "5.2.1",
+        "uid-safe": "~2.1.5"
+      },
+      "dependencies": {
+        "cookie": {
+          "version": "0.4.2",
+          "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+          "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
+        }
+      }
+    },
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -1533,6 +1555,11 @@
         "ee-first": "1.1.1"
       }
     },
+    "on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+    },
     "once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1866,6 +1893,11 @@
         "side-channel": "^1.0.4"
       }
     },
+    "random-bytes": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+      "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ=="
+    },
     "range-parser": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@@ -2201,6 +2233,14 @@
         "mime-types": "~2.1.24"
       }
     },
+    "uid-safe": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+      "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+      "requires": {
+        "random-bytes": "~1.0.0"
+      }
+    },
     "uid2": {
       "version": "0.0.4",
       "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz",

+ 1 - 0
express-server/package.json

@@ -23,6 +23,7 @@
     "express": "^4.17.1",
     "express-prom-bundle": "^6.1.0",
     "express-rate-limit": "^5.1.3",
+    "express-session": "^1.17.3",
     "jsonwebtoken": "^8.5.1",
     "mailgun-js": "^0.22.0",
     "mkdirp": "^1.0.4",

+ 4 - 3
express-server/routes/google.js

@@ -5,13 +5,14 @@ const { Email } = require('../models/email.model');
 const { User } = require('../models/user.model');
 const nodemailer = require('nodemailer');
 const role = require('../lib/role');
+const  config  = require('../config/config.json');
 //require('dotenv').config();
 
 const passport = require('passport');
 const GoogleStrategy = require('passport-google-oauth20').Strategy;
 
 router.use(passport.initialize());
-//router.use(passport.session());
+router.use(passport.session());
 
 
 passport.serializeUser((user, cb) => {
@@ -138,10 +139,10 @@ async () => {
 router.get('/callback',  passport.authenticate('google', { failureRedirect: '/failed' }),
   async (req, res) => {
       console.log('je susi dans ma fonction callback ', req.user)
-      const token = jwt.sign({ userId: req.user._id, email: req.user.email, role: req.user.role }, process.env.SECRET_KEY, { expiresIn: '10 h' })
+      const token = jwt.sign({ userId: req.user._id, email: req.user.email, role: req.user.role }, config.secret_key, { expiresIn: '10 h' })
        //res.status(200).json({ success: true, token, expireIn: `${new Date().getTime() + 120000}` })
       console.log(token) 
-      res.redirect(`http://localhost:4200/auth/?token=${token}`);
+      res.redirect(`http://localhost:4200/auth/${token}`);
     });