-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.js
executable file
·132 lines (122 loc) · 4.05 KB
/
setup.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
* Module dependencies.
*/
var mongoose = require('mongoose');
var Role = require('./src/server/app/models/index').role;
var User = require('./src/server/app/models/index').user;
var util = require('util')
var crypto = require('crypto');
var hash = require('./src/server/app/helpers/hash');
var admin = new Role({
title: 'Admin',
slug: 'admin'
});
var redactor = new Role({
title: 'Redactor',
slug: 'redactor'
});
var user = new Role({
title: 'User',
slug: 'user'
});
var admin1 = new User({
email: 'admin1@eee.oau',
name: {first : 'Admin1', middle : 'O.', last : 'admin1'},
salt :hash.salt,
hash: hash.hash('administrator'),
token: hash.token('admin1@eee.oau'),
title: 'Prof.',
specialization: 'Control and Instrumentation'
});
var admin2 = new User({
email: 'admin2@eee.oau',
name: {first : 'Admin2', middle : 'O.', last : 'admin2'},
salt :hash.salt,
hash: hash.hash('administrator'),
token: hash.token('admin2@eee.oau'),
title: 'Prof.',
specialization: 'Power'
});
var rolesExist = () => {
return Role.find({ $or: [{'slug':'admin'},{'slug':'redactor'},{'slug':'user'}] }).exec()
};
var createRoles = () => {
return new Promise(
(resolve, reject) => {
let errors = [];
let successes = [];
admin.save()
.then( doc => {
successes.push("Sucessfully Created Admin Role")
return redactor.save()
})
.then( doc => {
successes.push("Sucessfully Created Redactor Role")
return user.save()
})
.then( doc => {
successes.push("Sucessfully Created User Role")
if(errors.length)
reject(errors)
else
resolve(successes)
})
.catch( err => errors.push(err.stack))
});
}
var createUsers = () => {
var getAdminRole = Role.findOne({'slug':'admin'});
return new Promise(
(resolve, reject) => {
let promise = getAdminRole.exec();
promise
.then(role => {
console.log(JSON.stringify(role))
admin1.role = role._id;
admin2.role = role._id;
return admin1.save()
})
.then( user1 => {
console.log('Admin 1 created ' + JSON.stringify(user1))
return admin2.save()
})
.then( user2 => {
console.log('Admin 2 created: ' + JSON.stringify(user2))
resolve(user2)
})
.catch( err => {
console.log("Error in create users function " + err)
reject(err)
})
});
}
mongoose.set('debug', true);
mongoose.connect('mongodb://localhost/classattendance', function (err) {
if (err) throw err;
rolesExist()
.then(roles => {
if(!roles.length){
console.log('No prior roles');
createRoles()
.then( res => {
console.log ('Success creating roles: ' + util.inspect(res))
return createUsers()
})
.then( res => {
console.log ('Success creating administrators: ' + util.inspect(res))
mongoose.connection.close()
})
.catch( errors => {
console.log('There were errors creating roles or administrators: ' + util.inspect(errors))
mongoose.connection.close();
})
}else{
console.log('Exist' + roles);
mongoose.connection.close();
}
})
.catch(errors => {
console.log('There were errors: ' + util.inspect(errors))
mongoose.connection.close();
})
});