Database seeding

This commit is contained in:
Andrew Throener
2015-08-13 09:37:24 -05:00
parent 820355c85e
commit ea97f2e7d8
6 changed files with 100 additions and 6 deletions

View File

@@ -65,5 +65,6 @@ module.exports = {
}
}
},
livereload: true
livereload: true,
seedDB: process.env.MONGO_SEED || false
};

View File

@@ -61,5 +61,6 @@ module.exports = {
pass: process.env.MAILER_PASSWORD || 'MAILER_PASSWORD'
}
}
}
},
seedDB: process.env.MONGO_SEED || false
};

3
config/env/test.js vendored
View File

@@ -56,5 +56,6 @@ module.exports = {
pass: process.env.MAILER_PASSWORD || 'MAILER_PASSWORD'
}
}
}
},
seedDB: process.env.MONGO_SEED || false
};

View File

@@ -11,6 +11,11 @@ var config = require('../config'),
// Initialize Models
mongoose.loadModels();
//SeedDB
if (config.seedDB) {
require('./seed');
}
module.exports.loadModels = function loadModels() {
mongoose.loadModels();
};

85
config/lib/seed.js Normal file
View File

@@ -0,0 +1,85 @@
'use strict';
var mongoose = require('mongoose'),
chalk = require('chalk'),
crypto = require('crypto'),
User = mongoose.model('User');
console.log(chalk.bold.red('Warning: Database seeding is turned on'));
//If production only seed admin if it does not exist
if (process.env.NODE_ENV === 'production') {
//Add Local Admin
User.find({username: 'admin'}, function (err, users) {
if (users.length === 0) {
var password = crypto.randomBytes(64).toString('hex').slice(1, 20);
var user = new User({
username: 'admin',
password: password,
provider: 'local',
email: 'admin@localhost.com',
firstName: 'Admin',
lastName: 'Local',
displayName: 'Admin Local',
roles: ['user', 'admin']
});
// Then save the user
user.save(function (err) {
if (err) {
console.log('Failed to add local admin');
} else {
console.log(chalk.bold.red('Local admin added with password set to ' + password));
}
});
} else {
console.log('Admin user exists');
}
});
} else {
//Add Local User
User.find({username: 'user'}).remove(function () {
var password = crypto.randomBytes(64).toString('hex').slice(1, 20);
var user = new User({
username: 'user',
password: password,
provider: 'local',
email: 'user@localhost.com',
firstName: 'User',
lastName: 'Local',
displayName: 'User Local',
roles: ['user']
});
// Then save the user
user.save(function (err) {
if (err) {
console.log('Failed to add local user');
} else {
console.log(chalk.bold.red('Local user added with password set to ' + password));
}
});
});
//Add Local Admin
User.find({username: 'admin'}).remove(function () {
var password = crypto.randomBytes(64).toString('hex').slice(1, 20);
var user = new User({
username: 'admin',
password: password,
provider: 'local',
email: 'admin@localhost.com',
firstName: 'Admin',
lastName: 'Local',
displayName: 'Admin Local',
roles: ['user', 'admin']
});
// Then save the user
user.save(function (err) {
if (err) {
console.log('Failed to add local admin');
} else {
console.log(chalk.bold.red('Local admin added with password set to ' + password));
}
});
});
}

View File

@@ -23,18 +23,20 @@
"async": "^1.3.0",
"body-parser": "^1.13.1",
"bower": "^1.4.1",
"cfenv": "~1.0.0",
"chalk": "^1.1.0",
"compression": "^1.5.0",
"connect-flash": "~0.1.1",
"connect-mongo": "~0.8.1",
"consolidate": "~0.13.1",
"cookie-parser": "^1.3.2",
"crypto": "0.0.3",
"express": "^4.13.1",
"express-session": "^1.11.3",
"forever": "~0.14.2",
"glob": "^5.0.13",
"grunt-cli": "~0.1.13",
"grunt": "0.4.5",
"grunt-cli": "~0.1.13",
"helmet": "~0.9.1",
"jasmine-core": "^2.3.4",
"lodash": "^3.10.0",
@@ -57,8 +59,7 @@
"serve-favicon": "^2.3.0",
"socket.io": "^1.3.5",
"swig": "^1.4.2",
"validator": "^3.41.2",
"cfenv": "~1.0.0"
"validator": "^3.41.2"
},
"devDependencies": {
"grunt-concurrent": "^2.0.0",