-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathaccounts_hooks.js
More file actions
39 lines (36 loc) · 1.29 KB
/
accounts_hooks.js
File metadata and controls
39 lines (36 loc) · 1.29 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
import { Meteor } from 'meteor/meteor';
import { Accounts } from 'meteor/accounts-base';
Accounts.onCreateUser((options, user) => {
// Create empty user profile if none exists
user.profile = user.profile || {};
// Check services object exists
if (user.services) {
// Case 1: Register with Github
if (user.services.github) {
// Set user email address from Github email
user.emails = [
{
address: user.services.github.email,
verified: true,
},
];
// Search 'githubUsername' from database.
const githubUsername = user.services.github.username;
const existingUser = Meteor.users.findOne({ username: githubUsername });
if (existingUser === undefined) {
// Username available, set username to Github username.
user.username = githubUsername;
} else {
// Username clashes with existing username, add prefix
user.username = `gh-${githubUsername}`;
}
// Case 2: Register with local account, email verification required
} else if (user.services.password) {
// we wait for Meteor to create the user before sending an email
Meteor.setTimeout(() => {
Meteor.call('sendRegistrationEmailVerification', user._id);
}, 2 * 1000);
}
}
return user;
});