Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

user.js 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. const bcrypt = require("bcryptjs/dist/bcrypt")
  2. const { Router } = require("express")
  3. const User = require("../database/models/user")
  4. const getUsers = async (req, res, next) => {
  5. try {
  6. const allUsers = await User.find({})
  7. return res.status(200).send(allUsers)
  8. } catch (e) {
  9. // TODO: Jel i ovde treba next(e)?
  10. next(e)
  11. }
  12. }
  13. const getUser = async (req, res, next) => {
  14. try {
  15. const id = req.params.id
  16. if (!id) {
  17. return res.status(400).send('Bad request')
  18. }
  19. const user = await User.findById(id)
  20. if (!user) {
  21. return res.status(404).send("User with the id of: " + id + " doesnt exist")
  22. }
  23. return res.json(user)
  24. } catch (e) {
  25. next(e)
  26. }
  27. }
  28. const createUser = async (req, res, next) => {
  29. try {
  30. const userModel = req.body
  31. if (Object.entries(userModel).length === 0) {
  32. return res.status(400).send('Object cant be empty')
  33. }
  34. const err = await User.joiValidate(userModel)
  35. if (err) {
  36. return res.status(400).send(err.message)
  37. }
  38. const newUser = new User(userModel)
  39. newUser.password = await bcrypt.hash(newUser.password, 8)
  40. await newUser.save()
  41. return res.status(201).json(newUser)
  42. } catch (e) {
  43. next(e)
  44. }
  45. }
  46. const updateUser = async (req, res, next) => {
  47. try {
  48. const id = req.params.id
  49. const objBody = req.body
  50. if (Object.entries(objBody).length == 0) {
  51. return res.status(400).send('Invalid input parameters')
  52. }
  53. const err = await User.joiValidate(objBody)
  54. if (err) {
  55. return res.status(400).send(err.message)
  56. }
  57. let user = await User.findById(id);
  58. if (!user) {
  59. return res.status(404).send("User with the id of: " + id + " doesnt exist")
  60. }
  61. user.name = objBody.name
  62. user.password = objBody.password
  63. user.email = objBody.email
  64. await User.updateOne(user)
  65. return res.status(200).send('User updated successfully')
  66. } catch (e) {
  67. next(e)
  68. }
  69. }
  70. const updateUserContacts = async (req, res, next) => {
  71. try {
  72. userFound = true
  73. if (!userFound) {
  74. return res.status(404).send('user not found')
  75. }
  76. if (Object.entries(req.body).length == 0) {
  77. return res.status(400).send('invalid input parameters')
  78. }
  79. return res.status(200).send('user contacts updated successfully')
  80. } catch (e) {
  81. next(e)
  82. }
  83. }
  84. const deleteUser = async (req, res, next) => {
  85. try {
  86. const id = req.params.id
  87. if (!id) {
  88. return res.status(400).send('You need to provide valid Id')
  89. }
  90. const user = await User.findById(id)
  91. if (!user) {
  92. return res.status(404).send("User with the id of: " + id + " doesnt exist")
  93. }
  94. await User.deleteOne(user)
  95. return res.status(204).send('Deleting user with id of ' + id)
  96. } catch (e) {
  97. next(e)
  98. }
  99. }
  100. module.exports = { getUsers, getUser, createUser, updateUser, updateUserContacts, deleteUser }