user.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. const { Ticket } = require('../models/ticket.model');
  2. const { User } = require('../models/user.model');
  3. const bcrypt = require('bcrypt');
  4. const Role = require('../lib/role')
  5. //get user by id
  6. exports.getUserById = async (req, res, next) => {
  7. User.findById(req.params.id, { password: 0, resetLink: 0, __v: 0 })
  8. .then((user) => { res.status(200).json(user) })
  9. .catch(() => { res.status(404).json({ success: false, message: `Utilisateur non trouvé` }) })
  10. };
  11. //delete user by id
  12. exports.deleteUserById = async (req, res, next) => {
  13. User.deleteOne({_id: req.params.id})
  14. .then(() => { res.status(200).json({ success: true, message: `Utilisateur supprimé avec succès!` })})
  15. .catch( () => { res.status(400).json({ success: false, message: `Utilisateur non trouvé` }) });
  16. };
  17. //patch user by id
  18. exports.patchUserById = async (req, res, next) => {
  19. if (req.body.email || req.body.password || req.body.phonenumber || req.body.adress) {
  20. User.findOne({ _id: req.params.id })
  21. .then(user => {
  22. if (req.body.email) {
  23. User.findOne({ email: req.body.email })
  24. .then((user_db) => {
  25. if (user_db) {
  26. if (user_db._id !== user._id) { res.status(200).json({ success: true, message: 'adresse mail exist' })}
  27. }
  28. else {
  29. user.email = req.body.email
  30. }
  31. })
  32. .catch((err) => res.status(300).json({ success: false, message: err.message }))
  33. }
  34. if (req.body.password && req.body.newpassword) {
  35. bcrypt.compare(req.body.password, user.password)
  36. .then(valid => {
  37. if (!valid) { return res.status(401).json({ success: false, message: 'mot de passe incorrect' }); }
  38. bcrypt.hash(req.body.newpassword, 12)
  39. .then(hash => {
  40. user.password = hash
  41. })
  42. .catch(() => res.status(400).json({ success: false, message: 'erreur dans le password' }));
  43. })
  44. .catch(error => res.status(500).json({ error }))
  45. }
  46. if (req.body.adress) {
  47. if (typeof req.body.adress === "string") {
  48. user.adress = req.body.adress
  49. } else {
  50. res.status(400).json({ success: false, message: 'erreur dans le adresse' })
  51. }
  52. }
  53. if (req.body.phonenumber) {
  54. user.phonenumber = req.body.phonenumber
  55. }
  56. user.save()
  57. .then(() => { res.status(200).json({ success: true, message: ' changé avec success' }) })
  58. .catch((err) => res.status(500).json({ success: false, message: err.message }))
  59. })
  60. .catch(() => res.status(404).json({ success: false, message: 'utilisateur non trouvé' }));
  61. // else {
  62. // res.status(400).json({ success: false, message: 'mot de passe introuvable' });
  63. // }
  64. } else {
  65. res.status(400).json({ success: false, message: 'Aucun attribut envoyé' });
  66. }
  67. };
  68. //get all users
  69. exports.getAllUsers = async (req, res, next) => {
  70. var page = parseInt(req.query.page) || 1;
  71. var limit = parseInt(req.query.limit) || 10;
  72. console.log(req.query)
  73. if (req.query) {
  74. var query = {role : Role.Client}
  75. if (req.query.lastname) { query.lastname = { $regex: req.query.lastname } }
  76. if (req.query.firstname) { query.firstname = { $regex: req.query.firstname } }
  77. if (req.query.adress) { query.adress = { $regex: req.query.adress } }
  78. if (req.query.email) { query.email = req.query.email }
  79. if (req.query.startregister && req.query.endregister) { query.register_date = { "$gte": req.query.startregister, "$lt": req.query.endregister } }
  80. }
  81. await User.find(query, { password: 0, resetLink: 0, __v: 0 })
  82. .sort({ register_date: -1 })
  83. .skip((page - 1) * limit)
  84. .limit(limit)
  85. .exec((err, doc) => {
  86. if (err) {
  87. return res.status(500).json(err);
  88. }
  89. User.countDocuments(query).exec((count_error, count) => {
  90. if (err) {
  91. return res.status(404).json(count_error);
  92. }
  93. return res.status(200).json({
  94. success: true,
  95. page: page,
  96. page_size: doc.length,
  97. total: count,
  98. users: doc
  99. });
  100. });
  101. });
  102. };