From 4596d1916e1d2c0a9487fa63b11d26a19e6fe8c5 Mon Sep 17 00:00:00 2001
From: Aron Engineer <aron.engineer1@gmail.com>
Date: Tue, 9 Mar 2021 22:13:31 +0000
Subject: [PATCH] feat: User modified to add logged out attribute

---
 .../core/apps/users/RegisterUserReqMsgHdlr.scala          | 2 +-
 .../core/apps/users/ValidateAuthTokenReqMsgHdlr.scala     | 3 +++
 .../org/bigbluebutton/core/models/RegisteredUsers.scala   | 8 +++++---
 .../scala/org/bigbluebutton/core/models/Users2x.scala     | 1 +
 .../bigbluebutton/core2/testdata/FakeUserGenerator.scala  | 2 +-
 .../org/bigbluebutton/core2/testdata/TestDataGen.scala    | 2 +-
 .../scala/org/bigbluebutton/common2/msgs/UsersMgs.scala   | 2 +-
 7 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RegisterUserReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RegisterUserReqMsgHdlr.scala
index 6bb3078d0f..66462cf2eb 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RegisterUserReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/RegisterUserReqMsgHdlr.scala
@@ -26,7 +26,7 @@ trait RegisterUserReqMsgHdlr {
 
     val regUser = RegisteredUsers.create(msg.body.intUserId, msg.body.extUserId,
       msg.body.name, msg.body.role, msg.body.authToken,
-      msg.body.avatarURL, msg.body.guest, msg.body.authed, guestStatus)
+      msg.body.avatarURL, msg.body.guest, msg.body.authed, guestStatus, msg.body.loggedOut)
 
     RegisteredUsers.add(liveMeeting.registeredUsers, regUser)
 
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ValidateAuthTokenReqMsgHdlr.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ValidateAuthTokenReqMsgHdlr.scala
index 8ebc33ac0f..5b0373ea5b 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ValidateAuthTokenReqMsgHdlr.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/users/ValidateAuthTokenReqMsgHdlr.scala
@@ -34,6 +34,9 @@ trait ValidateAuthTokenReqMsgHdlr extends HandlerHelpers {
           if (u.banned) {
             failReason = "Ejected user rejoining"
             failReasonCode = EjectReasonCode.EJECTED_USER_REJOINING
+          } else if (u.loggedOut) {
+            failReason = "User had logged out"
+            failReasonCode = EjectReasonCode.USER_LOGGED_OUT
           }
           validateTokenFailed(
             outGW,
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/RegisteredUsers.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/RegisteredUsers.scala
index 6fdf595778..bd91ac6568 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/RegisteredUsers.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/RegisteredUsers.scala
@@ -5,7 +5,7 @@ import com.softwaremill.quicklens._
 object RegisteredUsers {
   def create(userId: String, extId: String, name: String, roles: String,
              token: String, avatar: String, guest: Boolean, authenticated: Boolean,
-             guestStatus: String): RegisteredUser = {
+             guestStatus: String, loggedOut: Boolean): RegisteredUser = {
     new RegisteredUser(
       userId,
       extId,
@@ -20,7 +20,8 @@ object RegisteredUsers {
       0,
       false,
       false,
-      false
+      false,
+      loggedOut
     )
   }
 
@@ -173,6 +174,7 @@ case class RegisteredUser(
     lastAuthTokenValidatedOn: Long,
     joined:                   Boolean,
     markAsJoinTimedOut:       Boolean,
-    banned:                   Boolean
+    banned:                   Boolean,
+    loggedOut:                Boolean
 )
 
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/Users2x.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/Users2x.scala
index f78bd17c85..19ca474674 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/Users2x.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/models/Users2x.scala
@@ -307,4 +307,5 @@ object EjectReasonCode {
   val VALIDATE_TOKEN = "validate_token_failed_eject_reason"
   val USER_INACTIVITY = "user_inactivity_eject_reason"
   val EJECTED_USER_REJOINING = "ejected_user_rejoining_reason"
+  val USER_LOGGED_OUT = "user_logged_out_reason"
 }
diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/testdata/FakeUserGenerator.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/testdata/FakeUserGenerator.scala
index a81cacc1ce..9c22ee0120 100755
--- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/testdata/FakeUserGenerator.scala
+++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core2/testdata/FakeUserGenerator.scala
@@ -54,7 +54,7 @@ object FakeUserGenerator {
       RandomStringGenerator.randomAlphanumericString(10) + ".png"
 
     val ru = RegisteredUsers.create(userId = id, extId, name, role,
-      authToken, avatarURL, guest, authed, guestStatus = GuestStatus.ALLOW)
+      authToken, avatarURL, guest, authed, guestStatus = GuestStatus.ALLOW, false)
     RegisteredUsers.add(users, ru)
     ru
   }
diff --git a/akka-bbb-apps/src/test/scala/org/bigbluebutton/core2/testdata/TestDataGen.scala b/akka-bbb-apps/src/test/scala/org/bigbluebutton/core2/testdata/TestDataGen.scala
index 907d352379..690efce2d1 100755
--- a/akka-bbb-apps/src/test/scala/org/bigbluebutton/core2/testdata/TestDataGen.scala
+++ b/akka-bbb-apps/src/test/scala/org/bigbluebutton/core2/testdata/TestDataGen.scala
@@ -14,7 +14,7 @@ object TestDataGen {
       RandomStringGenerator.randomAlphanumericString(10) + ".png"
 
     val ru = RegisteredUsers.create(userId = id, extId, name, role,
-      authToken, avatarURL, guest, authed, GuestStatus.ALLOW)
+      authToken, avatarURL, guest, authed, GuestStatus.ALLOW, false)
 
     RegisteredUsers.add(users, ru)
     ru
diff --git a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala
index 7d7f1b2814..db727c4b2d 100755
--- a/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala
+++ b/bbb-common-message/src/main/scala/org/bigbluebutton/common2/msgs/UsersMgs.scala
@@ -301,7 +301,7 @@ case class UserJoinMeetingAfterReconnectReqMsgBody(userId: String, authToken: St
  */
 object UserLeaveReqMsg { val NAME = "UserLeaveReqMsg" }
 case class UserLeaveReqMsg(header: BbbClientMsgHeader, body: UserLeaveReqMsgBody) extends StandardMsg
-case class UserLeaveReqMsgBody(userId: String, sessionId: String)
+case class UserLeaveReqMsgBody(userId: String, sessionId: String, loggedOut: Boolean)
 
 object GetUsersMeetingReqMsg { val NAME = "GetUsersMeetingReqMsg" }
 case class GetUsersMeetingReqMsg(header: BbbClientMsgHeader, body: GetUsersMeetingReqMsgBody) extends StandardMsg
-- 
GitLab