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
82 lines (72 loc) · 2.28 KB
/
02-load-users.js
File metadata and controls
82 lines (72 loc) · 2.28 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
80
81
82
'use strict'
import { default as debug } from 'debug'
// to enable these logs set `DEBUG=boot:02-load-users` or `DEBUG=boot:*`
const log = debug('boot:02-load-users')
module.exports = function (app) {
// Do not run if we are in codegen mode.
if (process.env.ENV === 'codegen') return
if (app.dataSources.db.name !== 'Memory' && !process.env.INITDB) {
return
}
createDefaultUsers()
function createDefaultUsers () {
log('Creating roles and users')
const User = app.models.User
const Role = app.models.Role
const RoleMapping = app.models.RoleMapping
const users = []
const 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((role) => {
Role.findOrCreate(
{where: {name: role.name}}, // find
{name: role.name}, // create
(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((roleUser) => {
User.findOrCreate(
{where: {username: roleUser.username}}, // find
roleUser, // create
(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,
}, (err, rolePrincipal) => {
if (err) {
console.error('error creating rolePrincipal', err)
}
users.push(createdUser)
})
})
})
})
})
return users
}
}