dusan-lazarevic 3 роки тому
джерело
коміт
4696c5bf57

+ 7
- 7
src/endpoints/token.js Переглянути файл

const Token = require('../models/token') const Token = require('../models/token')
const bcrypt = require('bcryptjs') const bcrypt = require('bcryptjs')


const loginUser = async (req, res) => {
const loginUser = async (req, res, next) => {
try { try {
const findUser = await Token.findByCredentials(req.body.email, req.body.password) const findUser = await Token.findByCredentials(req.body.email, req.body.password)
if(!findUser) {
if (!findUser) {
return res.status(400).send('Wrong credentials!') return res.status(400).send('Wrong credentials!')
} }
const isValidPassword = await bcrypt.compare(req.body.password, findUser.password) const isValidPassword = await bcrypt.compare(req.body.password, findUser.password)
if(!isValidPassword) {
if (!isValidPassword) {
return res.status(400).send('Password is incorrect!') return res.status(400).send('Password is incorrect!')
} }
const token = await Token.generateAuthToken(findUser) const token = await Token.generateAuthToken(findUser)


return res.send(findUser) return res.send(findUser)
} catch (e) { } catch (e) {
return res.status(500).send(e)
next(e)
} }
} }


const logout = async (req, res) => { const logout = async (req, res) => {
const result = await Token.destroyToken(req.body.token) const result = await Token.destroyToken(req.body.token)
if(!result) {
if (!result) {
return res.status(404).send('No user has the token provided!') return res.status(404).send('No user has the token provided!')
} }
return res.send('Token ' + req.body.token + ' invalidated!') return res.send('Token ' + req.body.token + ' invalidated!')
token: req.body.token token: req.body.token
} }
const result = await Token.refreshAuthToken(form.token) const result = await Token.refreshAuthToken(form.token)
if(!result) {
if (!result) {
return res.status(404).send('Token not valid!') return res.status(404).send('Token not valid!')
} }



+ 19
- 14
src/endpoints/user.js Переглянути файл

const bcrypt = require("bcryptjs/dist/bcrypt") const bcrypt = require("bcryptjs/dist/bcrypt")
const {Router} = require("express")
const { Router } = require("express")
const User = require("../models/user") const User = require("../models/user")
const logger = require("../logging/logger") const logger = require("../logging/logger")


const getUsers = async (res) => {
const getUsers = async (req, res, next) => {
try { try {
logger.silly('hello from logger') logger.silly('hello from logger')
const allUsers = await User.find({}) const allUsers = await User.find({})
return res.status(200).send(allUsers) return res.status(200).send(allUsers)
} catch (e) { } catch (e) {
return res.status(500).send(e)
next(e)
} }
} }


const getUser = async (res, id) => {
const getUser = async (req, res, next) => {
try { try {
const id = req.params.id
if (!id) { if (!id) {
return res.status(400).send('Bad request') return res.status(400).send('Bad request')
} }


return res.status(200).json(user) return res.status(200).json(user)
} catch (e) { } catch (e) {
return res.status(500).send(e)
next(e)
} }
} }


const createUser = async (res, userModel) => {
const createUser = async (req, res, next) => {
try { try {
const userModel = req.body
if (Object.entries(userModel).length === 0) { if (Object.entries(userModel).length === 0) {
return res.status(400).send('Object cant be empty') return res.status(400).send('Object cant be empty')
} }
} }
} }


const updateUser = async (res, id, objBody) => {
const updateUser = async (req, res, next) => {
try { try {
const id = req.params.id
const objBody = req.body
if (Object.entries(objBody).length == 0) { if (Object.entries(objBody).length == 0) {
return res.status(400).send('Invalid input parameters') return res.status(400).send('Invalid input parameters')
} }


return res.status(200).send('User updated successfully') return res.status(200).send('User updated successfully')
} catch (e) { } catch (e) {
return res.status(500).send(e)
next(e)
} }
} }


const updateUserContacts = async (req, res) => {
const updateUserContacts = async (req, res, next) => {
try { try {
userFound = true userFound = true
if (!userFound) { if (!userFound) {
} }
return res.status(200).send('user contacts updated successfully') return res.status(200).send('user contacts updated successfully')
} catch (e) { } catch (e) {
return res.status(500).send(e)
next(e)
} }
} }


const deleteUser = async (res, id) => {
const deleteUser = async (req, res, next) => {
try { try {
const id = req.params.id
if (!id) { if (!id) {
return res.status(400).send('You need to provide valid Id') return res.status(400).send('You need to provide valid Id')
} }


const user = await User.findById(id) const user = await User.findById(id)
if(!user){
if (!user) {
return res.status(404).send("User with the id of: " + id + " doesnt exist") return res.status(404).send("User with the id of: " + id + " doesnt exist")
} }




return res.status(204).send('Deleting user with id of ' + id) return res.status(204).send('Deleting user with id of ' + id)
} catch (e) { } catch (e) {
return res.status(500).send(e)
next(e)
} }
} }


module.exports = {getUsers, getUser, createUser, updateUser, updateUserContacts, deleteUser}
module.exports = { getUsers, getUser, createUser, updateUser, updateUserContacts, deleteUser }

+ 10
- 0
src/middleware/errorHandling.js Переглянути файл

const errorLogger = (err, req, res, next) => {
console.error('GRESKA KOLEGAA' + err)
next(err)
}
const errorResponder = (err, req, res, next) => {
res.status(err.statusCode).send(err)
}
module.exports = { errorLogger, errorResponder }

+ 3
- 9
src/routes/token.js Переглянути файл

* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.post('/auth/token', async (req, res) => {
return await endpoints.loginUser(req, res)
})
router.post('/auth/token', endpoints.loginUser)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.post('/auth/logout', async (req, res) => {
return await endpoints.logout(req, res)
})
router.post('/auth/logout', endpoints.logout)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.post('/auth/refresh', async(req, res) => {
return await endpoints.refreshUserToken(req, res)
})
router.post('/auth/refresh', endpoints.refreshUserToken)


module.exports = router module.exports = router

+ 6
- 17
src/routes/user.js Переглянути файл

const router = new express.Router() const router = new express.Router()
const app = express() const app = express()


router.get('/users', async (req, res) => {
return await endpoints.getUsers(res)
})
router.get('/users', endpoints.getUsers)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.get('/users/:id', async (req, res) => {
return await endpoints.getUser(res, req.params.id)
})
router.get('/users/:id', endpoints.getUser)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.post('/users', async (req, res) => {
return await endpoints.createUser(res, req.body)
})
router.post('/users', endpoints.createUser)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.put('/users/:id', async (req, res) => {
return await endpoints.updateUser(res, req.params.id, req.body)})
router.put('/users/:id', endpoints.updateUser)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.patch('/users/:id/contacts', async (req, res) => {
return await endpoints.updateUserContacts(req, res, req.body)
})
router.patch('/users/:id/contacts', endpoints.updateUserContacts)


/** /**
* @openapi * @openapi
* 500: * 500:
* description: Internal server error. * description: Internal server error.
*/ */
router.delete('/users/:id', async (req, res) => {
return await endpoints.deleteUser(req, res, req.body)
})
router.delete('/users/:id', endpoints.deleteUser)


module.exports = router module.exports = router

+ 5
- 0
src/server.js Переглянути файл

const tokenRouter = require('./routes/token') const tokenRouter = require('./routes/token')
const swaggerJsDoc = require("swagger-jsdoc") const swaggerJsDoc = require("swagger-jsdoc")
const swaggerUi = require("swagger-ui-express") const swaggerUi = require("swagger-ui-express")
const { errorLogger, errorResponder } = require('./middleware/errorHandling.js')
const cors = require('cors') const cors = require('cors')
const helmet = require('helmet') const helmet = require('helmet')



const swaggerOptions = { const swaggerOptions = {
swaggerDefinition: { swaggerDefinition: {
info: { info: {
} }
}) })


app.use(errorLogger);
app.use(errorResponder);

app.listen(port, () => { app.listen(port, () => {
console.log('Server is up on port ' + port) console.log('Server is up on port ' + port)
}) })

Завантаження…
Відмінити
Зберегти