-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAccounts.js
88 lines (82 loc) · 2.69 KB
/
Accounts.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
/**
* @file Accounts.js
* Code for creating new accounts
**/
var defaultCreateAccountSubject, defaultCreateAccountTemplate
function _initAccounts () {
defaultCreateAccountSubject = "Account Info";
defaultCreateAccountTemplate = "This email is to inform you that a new account has been created for <<username>> with the initial password <<password>>.";
}
function createAccountFromForm (results, fieldSettings) {
logNormal('createAccountFromForm(%s,%s)',results,fieldSettings);
if (! checkAuthorization(results, fieldSettings)) {
Logger.log('Unauthorized use attempted.')
return false;
}
var params = lookupFields(fieldSettings,results);
params.informList = []
if (params.informFormUser) {
params.informList.push(results.FormUser)
}
if (params.informOther) {
params.informList.push(params.informOther);
}
//params.informList.push(params.username); // doesn't work -- account isn't ready to receive email in time
return createAccount(params)
}
/* username, first, last, fields, informList, emailTemplate, emailSubject */
function createAccount (params) {
logNormal('createAccount(%s)',params);
var first = params.first;
var last = params.last;
var informList = params.informList ? params.informList : [];
var emailTemplate = params.emailTemplate ? params.emailTemplate : defaultCreateAccountTemplate;
var emailSubject = params.emailSubject ? params.emailSubject : defaultCreateAccountSubject;
var username = params.username;
var requirePasswordReset = params.requirePasswordReset
user = params.fields ? params.fields : {}
Logger.log('Username: '+username);
try {
var user = AdminDirectory.Users.get(username)
logNormal('User '+username+' already exists')
return user
}
catch (err) {
logNormal('Error '+err+' likely just means we need to create user...');
if (! user.primaryEmail) {
user.primaryEmail = username;
}
if (! user.name) {
user.name = {givenName:first,familyName:last}
}
if (! user.password) {
var pw = (Math.random()).toString(36).replace('0.','')
user.password = pw
}
if ( params.orgUnitPath ) {
user.orgUnitPath = params.orgUnitPath
}
if (requirePasswordReset) {
user.changePasswordAtNextLogin = true
}
Logger.log('Creating user: '+JSON.stringify(user));
user = AdminDirectory.Users.insert(user);
//Logger.log('User %s created with ID %s',user.primaryEmail,user.id);
fields = {
'username':username,
'first':first,
'last':last,
'password':pw,
}
if (informList) {
informList.forEach( function (username) {
sendEmailFromTemplate(
username,
emailSubject,
emailTemplate,
fields, true);
});
}
return user
}
}