user.model.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. const mongoose = require('mongoose');
  2. const uniqueValidator = require('mongoose-unique-validator');
  3. const {TicketSchema} = require('./ticket.model');
  4. const UserSchema = new mongoose.Schema(
  5. {
  6. firstname: {
  7. type: String,
  8. required: true,
  9. trim: true,
  10. lowercase: true,
  11. minlength: 2,
  12. maxlength: 50,
  13. match: [/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/]
  14. },
  15. lastname: {
  16. type: String,
  17. required: true,
  18. trim: true,
  19. minlength: 2,
  20. maxlength: 50,
  21. match: [/^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/]
  22. },
  23. email: {
  24. type: String,
  25. required: true,
  26. lowercase: true,
  27. match: [/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/]
  28. },
  29. password: {
  30. type: String,
  31. required: true,
  32. minlength: 2
  33. },
  34. role: {
  35. type: String,
  36. enum: ['client', 'employee', 'admin']
  37. },
  38. birthday: {
  39. type: Date,
  40. required: true
  41. },
  42. register_date: {
  43. type: Date,
  44. default: Date.now,
  45. required: true
  46. },
  47. phonenumber: {
  48. type: Number,
  49. required: true,
  50. minlength: 3,
  51. maxlength: 50,
  52. match: [/^(?:(?:\+|00)33|0)\s*[1-9](?:[\s.-]*\d{2}){4}$/]
  53. //pour faire des validations
  54. // validate(value) {
  55. // if(value < 0){
  56. // throw new Error('numero de telephone must be a positive number')
  57. // }
  58. // }
  59. },
  60. adress: {
  61. type: String,
  62. minlength: 5,
  63. maxlength: 300,
  64. match: [/^[A-z0-9À-ž\s ,.'-]+$/]
  65. },
  66. isActive: {
  67. type: Boolean,
  68. },
  69. isGain: {
  70. type: Boolean,
  71. },
  72. googleId: {
  73. type: String
  74. },
  75. facebookId: {
  76. type: String
  77. },
  78. resetLink: {
  79. type: String,
  80. default: ''
  81. },
  82. gains: {
  83. type: [TicketSchema]
  84. }
  85. }
  86. );
  87. //unique validator
  88. UserSchema.plugin(uniqueValidator);
  89. exports.UserSchema = UserSchema;
  90. User = mongoose.model('User', UserSchema );
  91. exports.User = User;