Advertisement
Guest User

Untitled

a guest
Mar 28th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. import bcrypt from 'bcryptjs';
  2.  
  3. /**
  4. * A model class representing user resource
  5. *
  6. * @param {Sequelize} sequelize - Sequelize object
  7. * @param {Sequelize.DataTypes} DataTypes - A convinient object holding data types
  8. * @return {Sequelize.Model} - User model
  9. */
  10. export default (sequelize, DataTypes) => {
  11. /**
  12. * @type {Sequelize.Model}
  13. */
  14. const User = sequelize.define('User', {
  15. email: {
  16. type: DataTypes.STRING,
  17. allowNull: false,
  18. unique: true,
  19. validate: {
  20. isEmail: { msg: 'Must be a valid email address' }
  21. }
  22. },
  23. password: {
  24. type: DataTypes.STRING,
  25. set(value) {
  26. this.setDataValue('password', bcrypt.hashSync(value, 10));
  27. }
  28. },
  29. isConfirmed: {
  30. type: DataTypes.BOOLEAN,
  31. defaultValue: false
  32. },
  33. createdAt: {
  34. type: DataTypes.DATE,
  35. defaultValue: sequelize.NOW
  36. },
  37. updatedAt: {
  38. type: DataTypes.DATE,
  39. defaultValue: sequelize.NOW,
  40. onUpdate: sequelize.NOW
  41. },
  42. deletedAt: {
  43. allowNull: true,
  44. type: DataTypes.DATE,
  45. }
  46. }, {});
  47.  
  48. User.associate = (models) => {
  49. User.hasOne(models.Profile, { foreignKey: 'userId' });
  50. User.belongsToMany(models.User, {
  51. foreignKey: 'userId',
  52. as: 'followers',
  53. through: models.UserFollowers
  54. });
  55. User.belongsToMany(models.User, {
  56. foreignKey: 'followerId',
  57. as: 'following',
  58. through: models.UserFollowers
  59. });
  60. };
  61.  
  62. /**
  63. * Validate user password
  64. *
  65. * @param {Object} user - User instance
  66. * @param {string} password - Password to validate
  67. * @returns {boolean} Truthy upon successful validation
  68. */
  69. User.comparePassword = (user, password) => bcrypt.compareSync(password, user.password);
  70.  
  71. return User;
  72. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement