summaryrefslogtreecommitdiffstats
path: root/server/routes/user.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-22 13:49:09 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-22 13:49:09 +0100
commit4569b85489e863465395f84e995dd3fdc44471b4 (patch)
tree6e4d27883809c94c8b3f3b87159d85c7f3874bbd /server/routes/user.js
parent81ddf9b700bc48a1f8e472209f080f9c1d9a9b09 (diff)
downloadwebsite_creator-4569b85489e863465395f84e995dd3fdc44471b4.tar.gz
website_creator-4569b85489e863465395f84e995dd3fdc44471b4.tar.bz2
website_creator-4569b85489e863465395f84e995dd3fdc44471b4.zip
implement refresh tokens
Diffstat (limited to 'server/routes/user.js')
-rw-r--r--server/routes/user.js25
1 files changed, 15 insertions, 10 deletions
diff --git a/server/routes/user.js b/server/routes/user.js
index d1100bc..b3bdee3 100644
--- a/server/routes/user.js
+++ b/server/routes/user.js
@@ -1,14 +1,19 @@
const router = require('express').Router();
const User = require('../models/User');
const auth = require('../middleware/auth');
+const jwt = require('jsonwebtoken');
+
+router.get('/me', auth, async (req, res) => {
+ const user = await User.findById(req.userId);
+ res.json({ email: user.email });
+})
router.post('/register', async (req, res) => {
const user = new User(req.body);
try {
await user.save();
- const token = await user.generateAuthToken();
- res.status(201).send({ user, token });
+ res.status(201).send({ email: user.email });
} catch(err) {
if (err._message) {
res.status(422).send(err._message);
@@ -23,10 +28,10 @@ router.post('/register', async (req, res) => {
router.post('/login', async (req, res) => {
try {
const user = await User.findByCredentials(req.body.email, req.body.password);
- const token = await user.generateAuthToken();
+ const token = await user.generateJwtToken();
res
.cookie('token', token, {
- expires: new Date(Date.now() + 604800000),
+ maxAge: 604800000,
secure: false,
httpOnly: true,
})
@@ -39,12 +44,12 @@ router.post('/login', async (req, res) => {
router.post('/logout', auth, async (req, res) => {
try {
- req.user.tokens = req.user.tokens.filter((token) => {
- return token.token !== req.token;
- });
- await req.user.save();
-
- res.status(204).send();
+ const user = await User.findById(req.userId);
+ await user.endSession(req.refreshToken);
+ res
+ .clearCookie('token')
+ .status(204)
+ .send();
} catch (err) {
res.status(500).send();
}