Guest User

Untitled

a guest
Aug 6th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. /* eslint-disable no-param-reassign */
  2. const { hashPassword } = require('../auth/helpers');
  3.  
  4. module.exports = (sequelize, DataTypes) => {
  5. const User = sequelize.define('user', {
  6. email: {
  7. type: DataTypes.STRING,
  8. validate: {
  9. isEmail: {
  10. msg: 'Email isn\'t correct'
  11. }
  12. },
  13. unique: 'unique_user'
  14. },
  15. name: DataTypes.STRING,
  16. avatar: DataTypes.STRING,
  17. prename: DataTypes.STRING,
  18. role: {
  19. type: DataTypes.STRING,
  20. defaultValue: 'user'
  21. },
  22. password: DataTypes.STRING,
  23. permissions: DataTypes.ARRAY(DataTypes.STRING),
  24. }, {
  25. underscored: true,
  26. getterMethods: {
  27. username() {
  28. if (this.role === 'user') {
  29. return `${this.prename ? this.prename : ''} ${this.name}`.trim();
  30. }
  31. return this.name;
  32. }
  33. },
  34. });
  35.  
  36. // eslint-disable-next-line consistent-return
  37. User.beforeValidate((user, options) => {
  38. if (!user.isNewRecord) {
  39. return undefined;
  40. }
  41. if (!options.defaults || !options.defaults.token) {
  42. if (user.email && !user.password) {
  43. throw new Error('Password is required');
  44. }
  45. if (!user.name) {
  46. throw new Error('Name is required');
  47. }
  48. }
  49. });
  50.  
  51. User.beforeCreate((user) => {
  52. if (user.isNewRecord && user.password) {
  53. user.password = hashPassword(user.password);
  54. }
  55. return new Promise((resolve) => {
  56. sequelize.models.role.findOne({ where: { name: user.role } })
  57. .then((role) => {
  58. if (role) {
  59. user.permissions = role.access_list;
  60. }
  61. return resolve(user);
  62. });
  63. });
  64. });
  65.  
  66. User.associate = (models) => {
  67. models.user.belongsToMany(models.product, {
  68. through: {
  69. model: models.subscribe_product,
  70. unique: true
  71. },
  72. foreignKey: 'user_id',
  73. });
  74. };
  75.  
  76. return User;
  77. };
Add Comment
Please, Sign In to add comment