diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentationpod/SetPresenterInPodReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentationpod/SetPresenterInPodReqMsgHdlr.scala index 9d4b54930d7747300bacc4108cb2f4edd0a5aeeb..0e3b63ee45b296945d419ff09b32aa8b70072f16 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentationpod/SetPresenterInPodReqMsgHdlr.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/presentationpod/SetPresenterInPodReqMsgHdlr.scala @@ -17,7 +17,7 @@ trait SetPresenterInPodReqMsgHdlr { if (applyPermissionCheck && !PermissionCheck.isAllowed(PermissionCheck.MOD_LEVEL, PermissionCheck.VIEWER_LEVEL, liveMeeting.users2x, msg.header.userId)) { val meetingId = liveMeeting.props.meetingProp.intId - val reason = "No permission to set presentation page." + val reason = "No permission to set presenter in presentation." PermissionCheck.ejectUserForFailedPermission(meetingId, msg.header.userId, reason, bus.outGW) state } else { diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/AddUserToPresenterGroupCmdMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/AddUserToPresenterGroupCmdMsgHdlr.scala index 8d664ebc520bd1e3b130b6b2034a7cf12e885939..c73a32f7f251c4b8bc59ff7a513b496ed6354e4c 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/AddUserToPresenterGroupCmdMsgHdlr.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/AddUserToPresenterGroupCmdMsgHdlr.scala @@ -13,17 +13,6 @@ trait AddUserToPresenterGroupCmdMsgHdlr { def handleAddUserToPresenterGroupCmdMsg(msg: AddUserToPresenterGroupCmdMsg) { - def broadcastAddUserToPresenterGroup(meetingId: String, userId: String, requesterId: String): Unit = { - val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, meetingId, userId) - val envelope = BbbCoreEnvelope(UserAddedToPresenterGroupEvtMsg.NAME, routing) - val header = BbbClientMsgHeader(UserAddedToPresenterGroupEvtMsg.NAME, meetingId, userId) - val body = UserAddedToPresenterGroupEvtMsgBody(userId, requesterId) - val event = UserAddedToPresenterGroupEvtMsg(header, body) - val msgEvent = BbbCommonEnvCoreMsg(envelope, event) - - outGW.send(msgEvent) - } - if (applyPermissionCheck && !PermissionCheck.isAllowed(PermissionCheck.MOD_LEVEL, PermissionCheck.VIEWER_LEVEL, liveMeeting.users2x, msg.header.userId)) { val meetingId = liveMeeting.props.meetingProp.intId val reason = "No permission to add user to presenter group." @@ -36,8 +25,7 @@ trait AddUserToPresenterGroupCmdMsgHdlr { requester <- Users2x.findWithIntId(liveMeeting.users2x, requesterId) } yield { if (requester.role == Roles.MODERATOR_ROLE) { - Users2x.addUserToPresenterGroup(liveMeeting.users2x, userId) - broadcastAddUserToPresenterGroup(liveMeeting.props.meetingProp.intId, userId, requesterId) + UsersApp.addUserToPresenterGroup(liveMeeting, outGW, userId, requesterId) } } } diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala index a0f414b3edc317a6111cf6d1ffbd8815691fc9b0..99bf9aebf8800dcb885c8f447a2cb970fa701354 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/UsersApp.scala @@ -2,9 +2,35 @@ package org.bigbluebutton.core.apps.users import akka.actor.ActorContext import akka.event.Logging +import org.bigbluebutton.common2.msgs._ import org.bigbluebutton.core.bus.InternalEventBus +import org.bigbluebutton.core.models.{ Roles, Users2x } import org.bigbluebutton.core.running.{ LiveMeeting, OutMsgRouter } +object UsersApp { + def broadcastAddUserToPresenterGroup(meetingId: String, userId: String, requesterId: String, + outGW: OutMsgRouter): Unit = { + val routing = Routing.addMsgToClientRouting(MessageTypes.BROADCAST_TO_MEETING, meetingId, userId) + val envelope = BbbCoreEnvelope(UserAddedToPresenterGroupEvtMsg.NAME, routing) + val header = BbbClientMsgHeader(UserAddedToPresenterGroupEvtMsg.NAME, meetingId, userId) + val body = UserAddedToPresenterGroupEvtMsgBody(userId, requesterId) + val event = UserAddedToPresenterGroupEvtMsg(header, body) + val msgEvent = BbbCommonEnvCoreMsg(envelope, event) + + outGW.send(msgEvent) + } + + def addUserToPresenterGroup(liveMeeting: LiveMeeting, outGW: OutMsgRouter, + userId: String, requesterId: String): Unit = { + Users2x.addUserToPresenterGroup(liveMeeting.users2x, userId) + UsersApp.broadcastAddUserToPresenterGroup( + liveMeeting.props.meetingProp.intId, + userId, requesterId, outGW + ) + } + +} + class UsersApp( val liveMeeting: LiveMeeting, val outGW: OutMsgRouter, diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala index 328f529965fc31f96a16ffc3cc6e86218aa5a20c..3a5bf819779b0f1982e8477242dfd4525aa9f591 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/running/HandlerHelpers.scala @@ -3,6 +3,7 @@ package org.bigbluebutton.core.running import org.bigbluebutton.SystemConfiguration import org.bigbluebutton.common2.msgs._ import org.bigbluebutton.core.api.{ BreakoutRoomEndedInternalMsg, DestroyMeetingInternalMsg, EndBreakoutRoomInternalMsg } +import org.bigbluebutton.core.apps.users.UsersApp import org.bigbluebutton.core.bus.{ BigBlueButtonEvent, InternalEventBus } import org.bigbluebutton.core.domain.MeetingState2x import org.bigbluebutton.core.models._ @@ -54,6 +55,11 @@ trait HandlerHelpers extends SystemConfiguration { if (!Users2x.hasPresenter(liveMeeting.users2x)) { automaticallyAssignPresenter(outGW, liveMeeting) } + + if (newUser.role == Roles.MODERATOR_ROLE) { + UsersApp.addUserToPresenterGroup(liveMeeting, outGW, newUser.intId, newUser.intId) + } + state.update(state.expiryTracker.setUserHasJoined()) case None => state