Upload 4.23

This commit is contained in:
Andrew Trieu
2023-06-10 15:11:13 +03:00
parent 4b88f3958f
commit a9b6ade2f4
18 changed files with 740 additions and 39 deletions

View File

@@ -1,4 +1,6 @@
const logger = require('./logger')
const jwt = require('jsonwebtoken')
const User = require('../models/user')
const requestLogger = (request, response, next) => {
logger.info('Method:', request.method)
@@ -19,13 +21,35 @@ const errorHandler = (error, request, response, next) => {
return response.status(400).send({ error: 'malformatted id' })
} else if (error.name === 'ValidationError') {
return response.status(400).json({ error: error.message })
} else if (error.name === 'JsonWebTokenError') {
return response.status(400).json({ error: error.message })
} else if (error.name === 'TokenExpiredError') {
return response.status(401).json({ error: 'token expired' })
}
next(error)
}
const tokenExtractor = (request, response, next) => {
const authorization = request.get('authorization')
if (authorization && authorization.startsWith('Bearer ')) {
request.token = authorization.replace('Bearer ', '')
}
next()
}
const userExtractor = async (request, response, next) => {
if (!request.token) return next()
const decodedToken = jwt.verify(request.token, process.env.SECRET)
const user = await User.findById(decodedToken.id)
request.user = user
next()
}
module.exports = {
requestLogger,
unknownEndpoint,
errorHandler
errorHandler,
tokenExtractor,
userExtractor
}