From 4085800c5f8f5fc037e1856ac8a9374e4e11000a Mon Sep 17 00:00:00 2001
From: Ahmad Farhat <ahmad.af.farhat@gmail.com>
Date: Thu, 5 Jan 2023 14:34:08 -0500
Subject: [PATCH] Added guest=true for all users not signed in (#4414)

* Added guest=true for all users not signed in

* Rubo
---
 Gemfile.lock                              |  3 ---
 app/controllers/concerns/bbb_server.rb    |  1 +
 app/controllers/concerns/joiner.rb        |  1 +
 spec/controllers/rooms_controller_spec.rb | 11 +++++++----
 4 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index 0d47c13f..34dcfda0 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -555,6 +555,3 @@ DEPENDENCIES
   uglifier (~> 4.2.0)
   web-console (~> 3.7, >= 3.7.0)
   webmock (~> 3.11)
-
-BUNDLED WITH
-   2.1.4
diff --git a/app/controllers/concerns/bbb_server.rb b/app/controllers/concerns/bbb_server.rb
index 26d9ea2d..8f845448 100644
--- a/app/controllers/concerns/bbb_server.rb
+++ b/app/controllers/concerns/bbb_server.rb
@@ -56,6 +56,7 @@ module BbbServer
     join_opts[:join_via_html5] = true
     join_opts[:avatarURL] = options[:avatarURL] if options[:avatarURL].present?
     join_opts[:createTime] = room.last_session.to_datetime.strftime("%Q") if room.last_session
+    join_opts[:guest] = true if options[:guest]
 
     bbb_server.join_meeting_url(room.bbb_id, name, password, join_opts)
   end
diff --git a/app/controllers/concerns/joiner.rb b/app/controllers/concerns/joiner.rb
index f887ed43..9d51ae1d 100644
--- a/app/controllers/concerns/joiner.rb
+++ b/app/controllers/concerns/joiner.rb
@@ -68,6 +68,7 @@ module Joiner
       opts[:record] = record_meeting
       opts[:require_moderator_approval] = room_setting_with_config("requireModeratorApproval")
       opts[:mute_on_start] = room_setting_with_config("muteOnStart")
+      opts[:guest] = current_user.nil?
 
       if current_user
         redirect_to join_path(@room, current_user.name, opts, current_user.uid)
diff --git a/spec/controllers/rooms_controller_spec.rb b/spec/controllers/rooms_controller_spec.rb
index 58131c0b..ecea8272 100644
--- a/spec/controllers/rooms_controller_spec.rb
+++ b/spec/controllers/rooms_controller_spec.rb
@@ -270,7 +270,7 @@ describe RoomsController, type: :controller do
       allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
       post :join, params: { room_uid: @room, join_name: "Join Name" }
 
-      expect(response).to redirect_to(join_path(@owner.main_room, "Join Name", {}, response.cookies["guest_id"]))
+      expect(response).to redirect_to(join_path(@owner.main_room, "Join Name", { guest: true }, response.cookies["guest_id"]))
     end
 
     it "should use join name if user is not logged in and meeting running and moderator access code is enabled and set" do
@@ -286,7 +286,8 @@ describe RoomsController, type: :controller do
 
       post :join, params: { room_uid: room, join_name: "Join Name" }, session: { moderator_access_code: "abcdef" }
 
-      expect(response).to redirect_to(join_path(room, "Join Name", { user_is_moderator: true }, response.cookies["guest_id"]))
+      expect(response).to redirect_to(join_path(room, "Join Name", { user_is_moderator: true, guest: true },
+response.cookies["guest_id"]))
     end
 
     it "should render wait if meeting isn't running" do
@@ -427,7 +428,8 @@ describe RoomsController, type: :controller do
 
       post :join, params: { room_uid: room, join_name: "Join Name" }, session: { moderator_access_code: "abcdef" }
 
-      expect(response).to redirect_to(join_path(room, "Join Name", { user_is_moderator: true }, response.cookies["guest_id"]))
+      expect(response).to redirect_to(join_path(room, "Join Name", { user_is_moderator: true, guest: true },
+response.cookies["guest_id"]))
     end
 
     it "should join the room as moderator if the user has the moderator_access code (and regular access code is set)" do
@@ -443,7 +445,8 @@ describe RoomsController, type: :controller do
 
       post :join, params: { room_uid: room, join_name: "Join Name" }, session: { moderator_access_code: "abcdef" }
 
-      expect(response).to redirect_to(join_path(room, "Join Name", { user_is_moderator: true }, response.cookies["guest_id"]))
+      expect(response).to redirect_to(join_path(room, "Join Name", { user_is_moderator: true, guest: true },
+response.cookies["guest_id"]))
     end
 
     it "should redirect to login if a wrong moderator access code is supplied" do
-- 
GitLab