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;