summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/db/mongoose.js2
-rw-r--r--server/middleware/auth.js3
-rw-r--r--server/middleware/redirectIfLoggedIn.js25
-rw-r--r--server/middleware/redirectLogged.js46
4 files changed, 48 insertions, 28 deletions
diff --git a/server/db/mongoose.js b/server/db/mongoose.js
index 9b89c14..8dde175 100644
--- a/server/db/mongoose.js
+++ b/server/db/mongoose.js
@@ -6,5 +6,5 @@ mongoose.connect(
useNewUrlParser: true,
useCreateIndex: true,
},
- () => console.log('connected to DB')
+ () => console.log('Successfully connected to DB.')
);
diff --git a/server/middleware/auth.js b/server/middleware/auth.js
index bec113d..5c77830 100644
--- a/server/middleware/auth.js
+++ b/server/middleware/auth.js
@@ -17,7 +17,6 @@ const auth = async (req, res, next) => {
} catch(er) {
if (er.message && er.message === 'jwt expired') {
const { _id, ref } = jwt.decode(token, process.env.JWT_SECRET);
- console.log('reading db to login')
const user = await User.findById(_id);
if (!user) {
@@ -27,7 +26,7 @@ const auth = async (req, res, next) => {
if (user.sessions.filter(s => s.ref === ref).length > 0) {
req.userId = _id;
req.refreshToken = ref;
- req.newToken = await user.generateJwtToken(res.req.refreshToken);;
+ req.newToken = await user.generateJwtToken(ref);;
return next();
}
diff --git a/server/middleware/redirectIfLoggedIn.js b/server/middleware/redirectIfLoggedIn.js
deleted file mode 100644
index fe793f7..0000000
--- a/server/middleware/redirectIfLoggedIn.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const jwt = require('jsonwebtoken');
-const User = require('../models/User');
-
-const redirectIfLoggedIn = async (req, res, next) => {
- try {
- const token = req.cookies.token || '';
-
- if (!token) {
- throw new Error();
- }
-
- const decoded = jwt.verify(token, process.env.JWT_SECRET);
- const user = await User.findOne({ _id: decoded._id, 'tokens.token': token });
-
- if (!user) {
- throw new Error();
- }
-
- res.redirect('/admin');
- } catch (err) {
- next();
- }
-};
-
-module.exports = redirectIfLoggedIn;
diff --git a/server/middleware/redirectLogged.js b/server/middleware/redirectLogged.js
new file mode 100644
index 0000000..40a5657
--- /dev/null
+++ b/server/middleware/redirectLogged.js
@@ -0,0 +1,46 @@
+const jwt = require('jsonwebtoken');
+const User = require('../models/User');
+
+const redirectLogged = async (req, res, next) => {
+ try {
+ const token = req.cookies.token || '';
+
+ if (!token) {
+ throw new Error();
+ }
+
+ try {
+ const decoded = jwt.verify(token, process.env.JWT_SECRET);
+ res.redirect('/admin');
+ } catch(er) {
+ if (er.message && er.message === 'jwt expired') {
+ const { _id, ref } = jwt.decode(token, process.env.JWT_SECRET);
+ const user = await User.findById(_id);
+
+ if (!user) {
+ throw new Error();
+ }
+
+ if (user.sessions.filter(s => s.ref === ref).length > 0) {
+ const newToken = await user.generateJwtToken(ref);;
+ res
+ .cookie('token', token, {
+ maxAge: parseInt(process.env.COOKIE_MAX_AGE),
+ secure: false,
+ httpOnly: true,
+ })
+ .redirect('/admin');
+ }
+
+ throw new Error();
+ }
+
+ throw new Error();
+ }
+ } catch (err) {
+ return next();
+ }
+
+};
+
+module.exports = redirectLogged;