diff --git a/bigbluebutton-html5/imports/api/acl/Acl.js b/bigbluebutton-html5/imports/api/acl/Acl.js
index c2e111ebd5bbf94dc6ae9635b3f02f49e11bbe6f..1752a17857f42323dfc31dc02e30555b4ed52207 100644
--- a/bigbluebutton-html5/imports/api/acl/Acl.js
+++ b/bigbluebutton-html5/imports/api/acl/Acl.js
@@ -9,9 +9,13 @@ export class Acl {
 
   subscribe(channel,credentials){
     check(channel, String);
+    console.log("Channell",channel);
+    console.log("credentials",credentials);
 
     let subscriptions = this.getSubscriptions(credentials);
 
+    console.log("subscriptions",subscriptions);
+
     if (subscriptions) {
       return !!this.checkPermission(channel, subscriptions);
     }
@@ -21,6 +25,9 @@ export class Acl {
   getSubscriptions(credentials){
     let role = this.getRole(credentials);
 
+    if(!role.subscribe){
+      return [];
+    }
     return role.subscriptions;
   }
 
@@ -35,6 +42,9 @@ export class Acl {
   getMethods(credentials){
     let role = this.getRole(credentials);
 
+    if(!role.methods){
+      return [];
+    }
     return role.methods;
   }
 
@@ -63,9 +73,9 @@ export class Acl {
     });
 
     if(!user){
+      console.log("Usuario vazio");
       return false;
     }
-
     return this.roleExist(this.aclConfig, user.user.role);
   }
 
diff --git a/bigbluebutton-html5/imports/api/breakouts/server/publishers.js b/bigbluebutton-html5/imports/api/breakouts/server/publishers.js
index 43132c36d0112617fd962abb01547da470964915..da577962051355575fbdc1c13916375a7036c39d 100644
--- a/bigbluebutton-html5/imports/api/breakouts/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/breakouts/server/publishers.js
@@ -5,7 +5,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('breakouts', function() {
   breakouts = breakouts.bind(this);
-  return mapToAcl(breakouts,'breakouts')(arguments);
+  return mapToAcl('breakouts',breakouts)(arguments);
 });
 
 function breakouts(credentials) {
diff --git a/bigbluebutton-html5/imports/api/captions/server/publishers.js b/bigbluebutton-html5/imports/api/captions/server/publishers.js
index 5349463ce1a5e0bea5cb05707f7da31a30ed5d13..b9c181dafb2c26f044fda36f812404357bbd34b1 100644
--- a/bigbluebutton-html5/imports/api/captions/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/captions/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('captions', function() {
   captions = captions.bind(this);
-  return mapToAcl(captions,'captions')(arguments);
+  return mapToAcl('captions',captions)(arguments);
 });
 
 function captions(credentials) {
diff --git a/bigbluebutton-html5/imports/api/chat/server/methods.js b/bigbluebutton-html5/imports/api/chat/server/methods.js
index 3b5c566b47930132ce68378a72abdcf8c7a769f6..559dfbd0118c20fbf1cf2bafd612ef6d12eac9d8 100644
--- a/bigbluebutton-html5/imports/api/chat/server/methods.js
+++ b/bigbluebutton-html5/imports/api/chat/server/methods.js
@@ -2,6 +2,6 @@ import { Meteor } from 'meteor/meteor';
 import sendChat from './methods/sendChat';
 import mapToAcl from '/imports/startup/mapToAcl';
 
-Meteor.methods(mapToAcl({
+Meteor.methods(mapToAcl(['sendChat',],{
   sendChat,
 }));
diff --git a/bigbluebutton-html5/imports/api/chat/server/publishers.js b/bigbluebutton-html5/imports/api/chat/server/publishers.js
index af75ebb52294043b17b9cc28b3a564354408d98a..737ceab5c5119a7a59c02f377a531286bea7ff62 100755
--- a/bigbluebutton-html5/imports/api/chat/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/chat/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('chat', function() {
   chat = chat.bind(this);
-  return mapToAcl(chat,'chat')(arguments);
+  return mapToAcl('chat', chat)(arguments);
 });
 
 function chat(credentials) {
diff --git a/bigbluebutton-html5/imports/api/cursor/server/publishers.js b/bigbluebutton-html5/imports/api/cursor/server/publishers.js
index db749fd5b0238dd4a41ec723f87a9890392119e5..7077e800439dc6b8332e05a40fd81ded41169661 100755
--- a/bigbluebutton-html5/imports/api/cursor/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/cursor/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('cursor', function() {
   cursor = cursor.bind(this);
-  return mapToAcl(cursor, 'cursor')(arguments);
+  return mapToAcl('cursor', cursor)(arguments);
 });
 
 function cursor(credentials) {
diff --git a/bigbluebutton-html5/imports/api/deskshare/server/publishers.js b/bigbluebutton-html5/imports/api/deskshare/server/publishers.js
index 8b95e0ff2db48b0a9104d18dc8a808c3741de746..8b490db19a81198a1112463850a6f3e8cdeb54ef 100755
--- a/bigbluebutton-html5/imports/api/deskshare/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/deskshare/server/publishers.js
@@ -5,7 +5,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('deskshare', function() {
   deskshare = deskshare.bind(this);
-  return mapToAcl(deskshare, 'deskshare')(arguments);
+  return mapToAcl('deskshare', deskshare)(arguments);
 });
 
 function deskshare(credentials) {
diff --git a/bigbluebutton-html5/imports/api/meetings/server/eventHandlers.js b/bigbluebutton-html5/imports/api/meetings/server/eventHandlers.js
index 6b5a931ad8018016f28cd1e33cb6351c5c0e0235..1d0bdffd0c5809cf0955558fe277b3d95607e965 100644
--- a/bigbluebutton-html5/imports/api/meetings/server/eventHandlers.js
+++ b/bigbluebutton-html5/imports/api/meetings/server/eventHandlers.js
@@ -3,7 +3,7 @@ import handleMeetingDestruction from './handlers/meetingDestruction';
 import handleRecordingStatusChange from './handlers/recordingStatusChange';
 import handlePermissionSettingsChange from './handlers/permissionSettingsChange';
 import handleMeetingCreation from './handlers/meetingCreation';
-import handleGetAllMettings from './handlers/getAllMeetings';
+import handleGetAllMeetings from './handlers/getAllMeetings';
 import handleStunTurnReply from './handlers/stunTurnReply';
 
 RedisPubSub.on('meeting_destroyed_event', handleMeetingDestruction);
@@ -13,5 +13,5 @@ RedisPubSub.on('disconnect_all_users_message', handleMeetingDestruction);
 RedisPubSub.on('recording_status_changed_message', handleRecordingStatusChange);
 RedisPubSub.on('new_permission_settings', handlePermissionSettingsChange);
 RedisPubSub.on('meeting_created_message', handleMeetingCreation);
-RedisPubSub.on('get_all_meetings_reply_message', handleGetAllMettings);
+RedisPubSub.on('get_all_meetings_reply_message', handleGetAllMeetings);
 RedisPubSub.on('send_stun_turn_info_reply_message', handleStunTurnReply);
diff --git a/bigbluebutton-html5/imports/api/meetings/server/handlers/getAllMeetings.js b/bigbluebutton-html5/imports/api/meetings/server/handlers/getAllMeetings.js
index 16b27d8f1bed64e823d474db5e8d9675ce07776a..fb114adcad90f56decfc9b15c61a00040d51c9d9 100644
--- a/bigbluebutton-html5/imports/api/meetings/server/handlers/getAllMeetings.js
+++ b/bigbluebutton-html5/imports/api/meetings/server/handlers/getAllMeetings.js
@@ -4,7 +4,7 @@ import Meetings from '/imports/api/meetings';
 import addMeeting from '../modifiers/addMeeting';
 import removeMeeting from '../modifiers/removeMeeting';
 
-export default function handleGetAllMettings({ payload }) {
+export default function handleGetAllMeetings({ payload }) {
   let meetings = payload.meetings;
 
   check(meetings, Array);
diff --git a/bigbluebutton-html5/imports/api/meetings/server/publishers.js b/bigbluebutton-html5/imports/api/meetings/server/publishers.js
index 982eadd494bf303413777888af788b4e091bb230..e00f68770b9586a955e8d001bb7580e9dd945e4a 100644
--- a/bigbluebutton-html5/imports/api/meetings/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/meetings/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('meetings', function() {
   meetings = meetings.bind(this);
-  return mapToAcl(meetings, 'meetings')(arguments);
+  return mapToAcl('meetings', meetings)(arguments);
 });
 
 function meetings(credentials) {
diff --git a/bigbluebutton-html5/imports/api/polls/server/methods.js b/bigbluebutton-html5/imports/api/polls/server/methods.js
index 755c8ae5e11407ca6879e2f95ea62180284edb19..7f8cb066737319e16f3049d6cc1ee7bec0a16df9 100644
--- a/bigbluebutton-html5/imports/api/polls/server/methods.js
+++ b/bigbluebutton-html5/imports/api/polls/server/methods.js
@@ -2,6 +2,6 @@ import { Meteor } from 'meteor/meteor';
 import publishVote from './methods/publishVote';
 import mapToAcl from '/imports/startup/mapToAcl';
 
-Meteor.methods(mapToAcl({
+Meteor.methods(mapToAcl(['publishVote',],{
   publishVote,
 }));
diff --git a/bigbluebutton-html5/imports/api/polls/server/publishers.js b/bigbluebutton-html5/imports/api/polls/server/publishers.js
index 4528c3bb11f08d89370b5555682eec3ac6bcb5f1..3175abdaaf0e13412547e7ddccd6beac3abb7579 100755
--- a/bigbluebutton-html5/imports/api/polls/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/polls/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('polls', function() {
   polls = polls.bind(this);
-  return mapToAcl(polls, 'polls')(arguments);
+  return mapToAcl('polls', polls)(arguments);
 });
 
 function polls(credentials) {
diff --git a/bigbluebutton-html5/imports/api/presentations/server/publishers.js b/bigbluebutton-html5/imports/api/presentations/server/publishers.js
index 9c0fde310a334af3d42a389ea6f2dc9fbc7f8211..3217db5e4f5cd239c323567e7950d82dbd5ad341 100755
--- a/bigbluebutton-html5/imports/api/presentations/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/presentations/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('presentations', function() {
   presentations = presentations.bind(this);
-  return mapToAcl(presentations, 'presentations')(arguments);
+  return mapToAcl('presentations', presentations)(arguments);
 });
 
 function presentations(credentials) {
diff --git a/bigbluebutton-html5/imports/api/shapes/server/publishers.js b/bigbluebutton-html5/imports/api/shapes/server/publishers.js
index 389f15929baf9b5b38bcc6f7accef7940e556dcd..6537e3a5fd2f0025973109fba4c680c652b85c7b 100644
--- a/bigbluebutton-html5/imports/api/shapes/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/shapes/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('shapes', function() {
   shapes = shapes.bind(this);
-  return mapToAcl(shapes, 'shapes')(arguments);
+  return mapToAcl('shapes', shapes)(arguments);
 });
 
 function shapes(credentials) {
diff --git a/bigbluebutton-html5/imports/api/slides/server/methods.js b/bigbluebutton-html5/imports/api/slides/server/methods.js
index f4589762d9cd46748c16b5a79378ae7de5a4daa3..4846b500e8b1523e189190aad671b49d22d3ccd4 100644
--- a/bigbluebutton-html5/imports/api/slides/server/methods.js
+++ b/bigbluebutton-html5/imports/api/slides/server/methods.js
@@ -2,7 +2,7 @@ import { Meteor } from 'meteor/meteor';
 import switchSlide from './methods/switchSlide';
 import mapToAcl from '/imports/startup/mapToAcl';
 
-Meteor.methods(mapToAcl({
+Meteor.methods(mapToAcl(['switchSlide','switchSlideMessage',],{
   switchSlide,
   switchSlideMessage: switchSlide, // legacy
 }));
diff --git a/bigbluebutton-html5/imports/api/slides/server/publishers.js b/bigbluebutton-html5/imports/api/slides/server/publishers.js
index 251e01cc8c27313223bdde896159f3e80c19ea7d..07623e58539339dca4bd27e518aa0a7f8712e32c 100644
--- a/bigbluebutton-html5/imports/api/slides/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/slides/server/publishers.js
@@ -7,7 +7,7 @@ import mapToAcl from '/imports/startup/mapToAcl';
 
 Meteor.publish('slides', function() {
   slides = slides.bind(this);
-  return mapToAcl(slides, 'slides')(arguments);
+  return mapToAcl('slides', slides)(arguments);
 });
 
 function slides(credentials) {
diff --git a/bigbluebutton-html5/imports/api/users/server/methods.js b/bigbluebutton-html5/imports/api/users/server/methods.js
index c7ee1ec0120d88c5a8b805c0e0eb8d8c12ff05ac..b703a3db8a09f0efba370b09cdf0e0eb13e03417 100644
--- a/bigbluebutton-html5/imports/api/users/server/methods.js
+++ b/bigbluebutton-html5/imports/api/users/server/methods.js
@@ -8,7 +8,9 @@ import setEmojiStatus from './methods/setEmojiStatus';
 import validateAuthToken from './methods/validateAuthToken';
 import mapToAcl from '/imports/startup/mapToAcl';
 
-Meteor.methods(mapToAcl({
+Meteor.methods(mapToAcl(['kickUser','listenOnlyToggle','userLogout',
+'assignPresenter','setEmojiStatus','muteUser','unmuteUser']
+,{
   kickUser,
   listenOnlyToggle,
   userLogout,
diff --git a/bigbluebutton-html5/imports/api/users/server/methods/listenOnlyToggle.js b/bigbluebutton-html5/imports/api/users/server/methods/listenOnlyToggle.js
index c694f367480ef112c507a41a240153536e52a33c..0e7e67e7570f7fde3a93530ff81881d0685a515a 100644
--- a/bigbluebutton-html5/imports/api/users/server/methods/listenOnlyToggle.js
+++ b/bigbluebutton-html5/imports/api/users/server/methods/listenOnlyToggle.js
@@ -46,7 +46,7 @@ export default function listenOnlyToggle(credentials, isJoining = true) {
   let payload = {
     userid: requesterUserId,
     meeting_id: meetingId,
-    voice_conf: Metting.voiceConf,
+    voice_conf: Meeting.voiceConf,
     name: User.user.name,
   };
 
diff --git a/bigbluebutton-html5/imports/api/users/server/publishers.js b/bigbluebutton-html5/imports/api/users/server/publishers.js
index c9a7cc5d57b0bb2e42b1b8b2dc8984fbcf1adc01..834d0faf991d5927b276889a28a076d96bfdc392 100644
--- a/bigbluebutton-html5/imports/api/users/server/publishers.js
+++ b/bigbluebutton-html5/imports/api/users/server/publishers.js
@@ -32,9 +32,9 @@ Meteor.publish('current-user', function (credentials) {
   return Users.find(selector, options);
 });
 
-Meteor.publish('users', function() {
-  users = users.bind(this);
-  return mapToAcl(users,'users')(arguments);
+Meteor.publish('users', function () {
+  let boundUsers = users.bind(this);
+  return mapToAcl('users',boundUsers)(arguments);
 });
 
 function users(credentials) {
@@ -69,4 +69,4 @@ function users(credentials) {
   Logger.info(`Publishing Users for ${meetingId} ${requesterUserId} ${requesterToken}`);
 
   return Users.find(selector, options);
-}
\ No newline at end of file
+}
diff --git a/bigbluebutton-html5/imports/startup/mapToAcl.js b/bigbluebutton-html5/imports/startup/mapToAcl.js
index 79b8798b8e4a48fa3ba2abca7e8cf313d78cc0b6..905ac2de3ae75084afb09aebe839b22691b7ca1e 100644
--- a/bigbluebutton-html5/imports/startup/mapToAcl.js
+++ b/bigbluebutton-html5/imports/startup/mapToAcl.js
@@ -15,7 +15,7 @@ const injectAclActionCheck = (name, handler) => {
   }
 };
 
-const injectAclSubscribeCheck = (name, handler) => {
+const injectAclSubscribeCheck = (name,handler) => {
   return (...args) => {
     const credentials = args[args.length - 1];
     if (!Acl.subscribe(name, credentials)) {
@@ -26,12 +26,13 @@ const injectAclSubscribeCheck = (name, handler) => {
   }
 };
 
-export default mapToAcl = (handler,name) => {
-  if(name){
-    return injectAclSubscribeCheck(name,handler);
+export default mapToAcl = (name,handler) => {
+  //The Meteor#methods require an object, while the Meteor#subscribe and function.
+  if(handler instanceof Function){
+    return injectAclSubscribeCheck(name, handler);
   }
-  return Object.keys(handler).reduce((previous, current) => {
-    previous[current] = injectAclActionCheck(current, handler[current]);
+  return Object.keys(handler).reduce((previous, current, index) => {
+    previous[current] = injectAclActionCheck(name[index], handler[current]);
     return previous;
   }, {})
 };