fix guest permissions

pull/1683/head
Diego Sampaio 10 years ago
parent e743adc248
commit 880537353e
  1. 2
      packages/rocketchat-livechat/app/client/lib/chatMessages.coffee
  2. 2
      packages/rocketchat-livechat/app/client/views/register.coffee
  3. 13
      packages/rocketchat-livechat/package.js
  4. 3
      packages/rocketchat-livechat/permissions.js
  5. 66
      packages/rocketchat-livechat/server/methods/registerGuest.js
  6. 56
      packages/rocketchat-livechat/server/methods/sendMessageLivechat.js

@ -97,7 +97,7 @@ class @ChatMessages
if error?
return showError error.reason
Meteor.loginWithPassword result.user, result.pass, (error) ->
Meteor.loginWithToken result.token, (error) ->
if error
return showError error.reason

@ -27,7 +27,7 @@ Template.register.events
if error?
return instance.showError error.reason
Meteor.loginWithPassword result.user, result.pass, (error) ->
Meteor.loginWithToken result.token, (error) ->
if error
return instance.showError error.reason

@ -28,7 +28,6 @@ Package.onUse(function(api) {
api.use('less@2.5.1');
api.addFiles('livechat.js', 'server');
api.addFiles('server/methods.js', 'server');
api.addFiles('server/startup.js', 'server');
api.addFiles('permissions.js', 'server');
@ -66,14 +65,16 @@ Package.onUse(function(api) {
// methods
api.addFiles('server/methods/addAgent.js', 'server');
api.addFiles('server/methods/addManager.js', 'server');
api.addFiles('server/methods/saveDepartment.js', 'server');
api.addFiles('server/methods/saveSurveyFeedback.js', 'server');
api.addFiles('server/methods/searchAgent.js', 'server');
api.addFiles('server/methods/registerGuest.js', 'server');
api.addFiles('server/methods/removeAgent.js', 'server');
api.addFiles('server/methods/removeManager.js', 'server');
api.addFiles('server/methods/removeDepartment.js', 'server');
api.addFiles('server/methods/saveTrigger.js', 'server');
api.addFiles('server/methods/removeManager.js', 'server');
api.addFiles('server/methods/removeTrigger.js', 'server');
api.addFiles('server/methods/saveDepartment.js', 'server');
api.addFiles('server/methods/saveSurveyFeedback.js', 'server');
api.addFiles('server/methods/saveTrigger.js', 'server');
api.addFiles('server/methods/searchAgent.js', 'server');
api.addFiles('server/methods/sendMessageLivechat.js', 'server');
// models
api.addFiles('server/models/Users.js', 'server');

@ -6,6 +6,9 @@ Meteor.startup(() => {
if (roles.indexOf('livechat-manager') === -1) {
Roles.createRole('livechat-manager');
}
if (roles.indexOf('livechat-guest') === -1) {
Roles.createRole('livechat-guest');
}
if (RocketChat.models && RocketChat.models.Permissions) {
RocketChat.models.Permissions.createOrUpdate('view-l-room', ['livechat-agent', 'livechat-manager', 'admin']);
RocketChat.models.Permissions.createOrUpdate('view-livechat-manager', ['livechat-manager', 'admin']);

@ -0,0 +1,66 @@
Meteor.methods({
registerGuest: function(token, name, email) {
console.log('registerGuest ->'.green, token);
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'
};
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
};
}
});

@ -1,60 +1,4 @@
Meteor.methods({
registerGuest: function(token, name, email) {
console.log('registerGuest ->'.green, token);
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');
}
pass = Meteor.uuid();
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,
password: pass
};
userId = Accounts.createUser(userData);
updateUser = {
name: name || user,
"profile.guest": true,
"profile.token": token
}
if (email && email.trim() !== "") {
updateUser.emails = [{ "address": email }];
}
Meteor.users.update(userId, {
$set: updateUser
});
return {
user: user,
pass: pass
};
},
sendMessageLivechat: function(message) {
var guest, operator, room;
console.log('sendMessageLivechat ->', arguments);
Loading…
Cancel
Save