user.js 865 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const _ = require('lodash')
  2. const Sequelize = require('sequelize')
  3. const sequelize = require('./sequelize')
  4. const config = require('../../config')
  5. const bcrypt = require('bcrypt')
  6. const User = sequelize.define('user', {
  7. id: {
  8. type: Sequelize.UUID,
  9. defaultValue: Sequelize.UUIDV1,
  10. primaryKey: true
  11. },
  12. email: {
  13. type: Sequelize.STRING,
  14. unique: true,
  15. validate: {
  16. isEmail: true
  17. }
  18. },
  19. name: Sequelize.STRING,
  20. password: Sequelize.STRING,
  21. resetToken: Sequelize.STRING
  22. }, {
  23. paranoid: true,
  24. indexes: [
  25. {
  26. unique: true,
  27. fields: ['email']
  28. }
  29. ],
  30. setterMethods: {
  31. password(value) {
  32. this.setDataValue('password', bcrypt.hashSync(value, config.auth.saltRounds))
  33. }
  34. }
  35. })
  36. User.prototype.sanitize = function() {
  37. return _.omit(this.dataValues, 'password', 'resetToken')
  38. }
  39. module.exports = User