The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/packages/rocketchat-livechat/server/methods/registerGuest.js

70 lines
1.4 KiB

Meteor.methods({
'livechat:registerGuest': function({ token, name, email, department } = {}) {
var pass, qt, user, userData, userExists, userId, inc = 0;
check(token, String);
user = Meteor.users.findOne({
"profile.token": token
}, {
fields: {
_id: 1
}
});
if (user != null) {
throw new Meteor.Error('token-already-exists', 'Token already exists');
}
while (true) {
qt = Meteor.users.find({
'profile.guest': true
}).count() + 1;
user = 'guest-' + (qt + inc++);
userExists = Meteor.users.findOne({
'username': user
}, {
fields: {
_id: 1
}
});
console.log('userExists ->',userExists);
if (!userExists) {
break;
}
}
userData = {
username: user,
globalRoles: ['livechat-guest'],
department: department
};
userId = Accounts.insertUserDoc({}, userData);
updateUser = {
name: name || user,
"profile.guest": true,
"profile.token": token
}
if (email && email.trim() !== "") {
updateUser.emails = [{ "address": email }];
}
var stampedToken = Accounts._generateStampedLoginToken();
var hashStampedToken = Accounts._hashStampedToken(stampedToken);
updateUser.services = {
resume: {
loginTokens: [ hashStampedToken ]
}
};
Meteor.users.update(userId, {
$set: updateUser
});
return {
userId: userId,
token: stampedToken.token
};
}
});