summaryrefslogtreecommitdiffstats
path: root/server/routes
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /server/routes
downloadwebsite_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.js46
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;