diff options
author | 2020-11-16 00:10:28 +0100 | |
---|---|---|
committer | 2020-11-16 00:10:28 +0100 | |
commit | e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch) | |
tree | 55713f725f77b44ebfec86e4eec3ce33e71458ca /server/routes | |
download | website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2 website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip |
api, login, auth
Diffstat (limited to 'server/routes')
-rw-r--r-- | server/routes/user.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/server/routes/user.js b/server/routes/user.js new file mode 100644 index 0000000..9830b1d --- /dev/null +++ b/server/routes/user.js @@ -0,0 +1,46 @@ +const router = require('express').Router(); +const User = require('../models/User'); +const auth = require('../middleware/auth'); + +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 }); + } catch(err) { + if (err._message) { + res.status(422).send(err._message); + } else if (err.code && err.code === 11000) { + res.status(409).send('User with this email already exist'); + } else { + res.status(400).send('Could not save the user'); + } + } +}); + +router.post('/login', async (req, res) => { + try { + const user = await User.findByCredentials(req.body.email, req.body.password); + const token = await user.generateAuthToken(); + res.send({ user, token }); + } catch (err) { + res.status(401).send('Could not login'); + } +}); + +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.send(); + } catch (err) { + res.status(500).send(); + } +}); + +module.exports = router; |