async login(req, res) {
try {
const error = validationResult(req)
if (!error) {
return res.status(200).json({
error: error.array(),
message: 'Некорректный данные при авторизации!'
})
}
const {email, password} = req.body
const user = await User.findOne({email})
if (!user) {
return res.status(200).json({
message: 'Пользователь не найден!'
})
}
const isMath = await bcrypt.compare(password, user.password)
if (!isMath) {
return res.status(200).json({
message: 'Неверный пароль, попробуйте снова!'
})
}
const token = jwt.sign(
{userId: user.id},
config.get('SecretKey')
)
return res.cookie('token', token, {httpOnly: true, maxAge: '100000'}).json({
message: 'Вы успешно авторизованы!',
token: true
})
} catch (e) {
res.status(500).json({
message: 'Что-то пошло не так попробуйте снова!',
})
}
}
require('dotenv').config()
const path = require('path');
const express = require('express');
const mongoose = require('mongoose')
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const cors = require('cors')
const app = express()
app.set('views', path.resolve(__dirname, 'views'))
app.set('view engine', 'hbs')
app.use(logger('dev'))
app.use(cookieParser())
app.use(express.json())
app.use(express.urlencoded({extended: false}))
app.use(express.static(path.resolve(__dirname, 'public')))
app.use(cors({origin: '*'}))
app.use('/api', require('./routes/api/AuthRouter'))
app.use('/', require('./routes/static/StaticRouter'))
async function start() {
try {
await mongoose.connect(process.env.MONGO)
} catch (e) {
console.log(e)
}
}
start()
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
const {Router} = require('express')
const {check} = require('express-validator')
const AuthController = require('../../controller/AuthController')
const router = Router()
router.post('/auth/login', [
check('email', 'Введите корректный email!').normalizeEmail().isEmail(),
check('password', 'Введите пароль').exists()
], AuthController.login)
module.exports = router