Advertisement
Guest User

Untitled

a guest
Jun 14th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. 'use strict';
  2.  
  3. const mongoose = require('mongoose');
  4. const Schema = mongoose.Schema;
  5.  
  6. const MD5 = require('crypto-js/md5');
  7.  
  8. function setPassword(password) {
  9. return this.encryptPassword(password);
  10. };
  11.  
  12. function validateUserNameField(userName, cb) {
  13. this.model('User').find({ userName: userName }, { _id: 0, userName: 1 }).count((err, val) => {
  14. cb(val == 0);
  15. });
  16. };
  17.  
  18. function validateEmailField(email, cb) {
  19. this.model('User').find({ email: email }, { _id: 0, email: 1 }).count((err, val) => {
  20. cb(val == 0);
  21. });
  22. };
  23.  
  24. const UserSchema = new Schema({
  25. userName: {
  26. type: String,
  27. required: true,
  28. validate: {
  29. validator: validateUserNameField,
  30. message: 'User with name {VALUE} has been already added.'
  31. }
  32. },
  33. email: {
  34. type: String,
  35. required: true,
  36. validate: {
  37. validator: validateEmailField,
  38. message: 'User with email {VALUE} has been already added.'
  39. }
  40. },
  41. password: {
  42. type: String,
  43. set: setPassword,
  44. required: true
  45. },
  46. firstName: {
  47. type: String,
  48. required: false
  49. },
  50. lastName: {
  51. type: String,
  52. required: false
  53. }
  54. });
  55.  
  56. UserSchema.methods.comparePassword = function (password) {
  57. return this.password == this.encryptPassword(password);
  58. };
  59.  
  60. UserSchema.methods.encryptPassword = function (password) {
  61. return MD5(password);
  62. };
  63.  
  64. module.exports = mongoose.model('User', UserSchema);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement