forked from colmena/colmena
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path02-load-users.js
More file actions
79 lines (69 loc) · 2.19 KB
/
02-load-users.js
File metadata and controls
79 lines (69 loc) · 2.19 KB
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
'use strict';
// to enable these logs set `DEBUG=boot:02-load-users` or `DEBUG=boot:*`
var log = require('debug')('boot:02-load-users');
module.exports = function(app) {
if (app.dataSources.db.name !== 'Memory' && !process.env.INITDB) {
return;
}
createDefaultUsers();
function createDefaultUsers() {
log('Creating roles and users');
var User = app.models.User;
var Role = app.models.Role;
var RoleMapping = app.models.RoleMapping;
var users = [];
var roles = [{
name: 'admin',
users: [{
firstName: 'Admin',
lastName: 'User',
email: 'admin@admin.com',
username: 'admin',
password: 'admin'
}]
}, {
name: 'users',
users: [{
firstName: 'Guest',
lastName: 'User',
email: 'user@user.com',
username: 'user',
password: 'user'
}]
}];
roles.forEach(function(role) {
Role.findOrCreate(
{where: {name: role.name}}, // find
{name: role.name}, // create
function(err, createdRole, created) {
if (err) {
console.error('error running findOrCreate('+role.name+')', err);
}
(created) ? log('created role', createdRole.name)
: log('found role', createdRole.name);
role.users.forEach(function(roleUser) {
User.findOrCreate(
{where: {username: roleUser.username}}, // find
roleUser, // create
function(err, createdUser, created) {
if (err) {
console.error('error creating roleUser', err);
}
(created) ? log('created user', createdUser.username)
: log('found user', createdUser.username);
createdRole.principals.create({
principalType: RoleMapping.USER,
principalId: createdUser.id
}, function(err, rolePrincipal) {
if (err) {
console.error('error creating rolePrincipal', err);
}
users.push(createdUser);
});
});
});
});
});
return users;
}
};