forked from External/greenlight
Add optional moderator codes (#2413)
* add column for moderator code * add interface for moderator access code * add support for write and update moderator access * check if correct moderator_code in session * move access code form into own component * add support for moderator access code * add support for moderator access code * add copy code button for moderator code * freeze all the things * add tests for moderator access code * add helpfer for moderator_access setting * add setting for moderator access code * show setting for moderator access code * add checks for moderator code setting * use method from room controller for moderator password check * add tests for login with moderator access code * add check for moderator code setting * check if moderator codes are enabled in settings * only display form for moderator code if enabled in settings * add newline at end of file * make check for moderator code available as helper * align style of join button and access code button * add localization for moderator codes * add field for moderator codes * add field for moderator access code to rooms * fixes for rubocop * fix LineLenghts for rubocop * fix double space Co-authored-by: Ahmad Farhat <ahmad.af.farhat@gmail.com>
This commit is contained in:
@ -273,6 +273,21 @@ describe RoomsController, type: :controller do
|
||||
expect(response).to redirect_to(join_path(@owner.main_room, "Join Name", {}, 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
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_call_original
|
||||
allow_any_instance_of(Setting).to receive(:get_value).with("Moderator Access Codes").and_return("true")
|
||||
|
||||
room = Room.new(name: "test", moderator_access_code: "abcdef")
|
||||
room.room_settings = "{ }"
|
||||
room.owner = @owner
|
||||
room.save
|
||||
|
||||
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"]))
|
||||
end
|
||||
|
||||
it "should render wait if meeting isn't running" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(false)
|
||||
|
||||
@ -398,6 +413,62 @@ describe RoomsController, type: :controller do
|
||||
expect(response).to redirect_to room_path(protected_room.uid)
|
||||
end
|
||||
|
||||
it "should join the room as moderator if the user has the moderator_access code (and regular access code is not set)" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_call_original
|
||||
allow_any_instance_of(Setting).to receive(:get_value).with("Moderator Access Codes").and_return("true")
|
||||
|
||||
room = Room.new(name: "test", moderator_access_code: "abcdef")
|
||||
room.room_settings = "{ }"
|
||||
room.owner = @owner
|
||||
room.save
|
||||
|
||||
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"]))
|
||||
end
|
||||
|
||||
it "should join the room as moderator if the user has the moderator_access code (and regular access code is set)" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_call_original
|
||||
allow_any_instance_of(Setting).to receive(:get_value).with("Moderator Access Codes").and_return("true")
|
||||
|
||||
room = Room.new(name: "test", access_code: "123456", moderator_access_code: "abcdef")
|
||||
room.room_settings = "{ }"
|
||||
room.owner = @owner
|
||||
room.save
|
||||
|
||||
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"]))
|
||||
end
|
||||
|
||||
it "should redirect to login if a wrong moderator access code is supplied" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
|
||||
room = Room.new(name: "test", access_code: "123456", moderator_access_code: "abcdef")
|
||||
room.room_settings = "{ }"
|
||||
room.owner = @owner
|
||||
room.save
|
||||
|
||||
post :join, params: { room_uid: room, join_name: "Join Name" }, session: { moderator_access_code: "abcdee" }
|
||||
|
||||
expect(response).to redirect_to room_path(room.uid)
|
||||
end
|
||||
|
||||
it "should redirect to login if a 'empty' moderator access code is supplied and moderator code is not set" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
|
||||
room = Room.new(name: "test", access_code: "123456")
|
||||
room.room_settings = "{ }"
|
||||
room.owner = @owner
|
||||
room.save
|
||||
|
||||
post :join, params: { room_uid: room, join_name: "Join Name" }, session: { moderator_access_code: nil }
|
||||
|
||||
expect(response).to redirect_to room_path(room.uid)
|
||||
end
|
||||
|
||||
it "should join owner as moderator if meeting running" do
|
||||
allow_any_instance_of(BigBlueButton::BigBlueButtonApi).to receive(:is_meeting_running?).and_return(true)
|
||||
|
||||
@ -671,12 +742,49 @@ describe RoomsController, type: :controller do
|
||||
expect(flash[:alert]).to be_nil
|
||||
end
|
||||
|
||||
it "should redirect to show with valid moderator_access_code as regular access_code" do
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_call_original
|
||||
allow_any_instance_of(Setting).to receive(:get_value).with("Moderator Access Codes").and_return("true")
|
||||
|
||||
@room.moderator_access_code = "abcdef"
|
||||
@room.save
|
||||
|
||||
post :login, params: { room_uid: @room.uid, room: { access_code: "abcdef" } }
|
||||
|
||||
expect(response).to redirect_to room_path(@room.uid)
|
||||
expect(flash[:alert]).to be_nil
|
||||
expect(session[:moderator_access_code]).to eq("abcdef")
|
||||
end
|
||||
|
||||
it "should redirect to show with and notify user of invalid access code" do
|
||||
post :login, params: { room_uid: @room.uid, room: { access_code: "123455" } }
|
||||
|
||||
expect(response).to redirect_to room_path(@room.uid)
|
||||
expect(flash[:alert]).to eq(I18n.t("room.access_code_required"))
|
||||
end
|
||||
|
||||
it "should redirect to show and notify user of invalid moderator access code" do
|
||||
@room.moderator_access_code = "abcdef"
|
||||
@room.save
|
||||
|
||||
post :login, params: { room_uid: @room.uid, room: { moderator_access_code: "abcdee" } }
|
||||
|
||||
expect(response).to redirect_to room_path(@room.uid)
|
||||
expect(flash[:alert]).to eq(I18n.t("room.access_code_required"))
|
||||
end
|
||||
|
||||
it "it should redirect to show with valid moderator access code and disabled moderator codes setting" do
|
||||
allow_any_instance_of(Setting).to receive(:get_value).and_call_original
|
||||
allow_any_instance_of(Setting).to receive(:get_value).with("Moderator Access Codes").and_return("false")
|
||||
|
||||
@room.moderator_access_code = "abcdef"
|
||||
@room.save
|
||||
|
||||
post :join, params: { room_uid: @room, join_name: "Join Name" }, session: { moderator_access_code: "abcdef" }
|
||||
|
||||
expect(response).to redirect_to room_path(@room.uid)
|
||||
expect(flash[:alert]).to eq(I18n.t("room.access_code_required"))
|
||||
end
|
||||
end
|
||||
|
||||
describe "POST join_specific_room" do
|
||||
|
Reference in New Issue
Block a user