You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
984 B
37 lines
984 B
const express = require('express');
|
|
const passport = require('passport')
|
|
const router = express.Router();
|
|
const {celebrate} = require('celebrate');
|
|
|
|
const {userAuthSchema} = require('../schemas/joi')
|
|
|
|
router.post('/auth/login',
|
|
celebrate(userAuthSchema),
|
|
(req, res, next) => {
|
|
passport.authenticate('local', {}, (err, user, info) => {
|
|
if (err)
|
|
return res.status(400).json({errors: err});
|
|
if (!user)
|
|
return res.status(400).json({errors: info});
|
|
|
|
req.logIn(user, () => {
|
|
return res.status(200).json({user: req.user});
|
|
});
|
|
})(req, res, next);
|
|
});
|
|
|
|
router.post('/auth/logout',
|
|
(req, res) => {
|
|
req.logout();
|
|
res.redirect('/');
|
|
});
|
|
|
|
router.get('/auth/current_user',
|
|
(req, res) => {
|
|
if (!req.user)
|
|
return res.status(404).json({errors: 'No current user!'})
|
|
|
|
res.send(req.user);
|
|
});
|
|
|
|
module.exports = router;
|
|
|