Advertisement
Guest User

Untitled

a guest
Aug 9th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. export var db: DbConnection = {};
  2. export var sequelize = new Sequelize(process.env.DB_CONNECTION_STRING);
  3. var basename = path.basename(module.filename);
  4. fs
  5. .readdirSync(__dirname)
  6. .filter(function (file) {
  7. return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
  8. })
  9. .forEach(function (file) {
  10. var model = sequelize['import'](path.join(__dirname, file));
  11. db[model['name']] = model;
  12. });
  13.  
  14. Object.keys(db).forEach(function (modelName) {
  15. if (db[modelName].associate) {
  16. db[modelName].associate(db);
  17. }
  18. });
  19.  
  20. db['sequelize'] = sequelize; db['Sequelize'] = Sequelize;
  21.  
  22. export default <DbConnection>db;
  23.  
  24. export default function defineUser(sequelize: Sequelize.Sequelize, DataTypes) {
  25. var User = sequelize.define<UserInstance, UserAttributes>('User', {
  26. email: {
  27. type: Sequelize.STRING,
  28. unique: true,
  29. validate: { isEmail: true }
  30. },
  31. password: Sequelize.STRING,
  32. role: {
  33. type: DataTypes.ENUM,
  34. values: ['Admin', 'Operator', 'Member']
  35. }
  36. });
  37.  
  38. User.beforeCreate(function (user: UserInstance, options) {
  39. return hashPassword(user.password).then(function (hashedPw) {
  40. user.password = hashedPw;
  41. });
  42. })
  43. return User;
  44. };
  45.  
  46. function hashPassword(password: string): Promise<string> {
  47. return new Promise(function (resolve, reject) {
  48. bcrypt.genSalt(5, function (err, salt) {
  49. if (err) { reject(err); }
  50.  
  51. bcrypt.hash(password, salt, null, function (err, hash) {
  52. if (err) { reject(err); }
  53. resolve(hash);
  54. })
  55. });
  56. })
  57. };
  58.  
  59. email: {
  60. type: Sequelize.STRING, //change to DataTypes.STRING
  61. unique: true,
  62. validate: { isEmail: true }
  63. },
  64. password: Sequelize.STRING, //change to DataTypes.STRING
  65. role: {
  66. type: DataTypes.ENUM,
  67. values: ['Admin', 'Operator', 'Member']
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement