Skip to content
Snippets Groups Projects
Unverified Commit 92d01a34 authored by Samuel Couillard's avatar Samuel Couillard Committed by GitHub
Browse files

Fix Moderator Access Code (#4716)

* Fix Moderator Access Code

* Fix specs
parent d50fe766
No related branches found
No related tags found
No related merge requests found
...@@ -57,7 +57,7 @@ module Api ...@@ -57,7 +57,7 @@ module Api
provider: current_provider, provider: current_provider,
current_user:, current_user:,
show_codes: false, show_codes: false,
settings: %w[glRequireAuthentication glViewerAccessCode glModeratorAccessCode record] settings: %w[glRequireAuthentication glViewerAccessCode glModeratorAccessCode record glAnyoneJoinAsModerator]
).call ).call
render_data data: @room, serializer: PublicRoomSerializer, options: { settings: }, status: :ok render_data data: @room, serializer: PublicRoomSerializer, options: { settings: }, status: :ok
......
...@@ -124,10 +124,13 @@ export default function RoomJoin() { ...@@ -124,10 +124,13 @@ export default function RoomJoin() {
const hasAccessCode = publicRoom.data?.viewer_access_code || publicRoom.data?.moderator_access_code; const hasAccessCode = publicRoom.data?.viewer_access_code || publicRoom.data?.moderator_access_code;
if (!publicRoom.data?.viewer_access_code && publicRoom.data?.moderator_access_code) { if (publicRoom.data?.viewer_access_code || !publicRoom.data?.moderator_access_code) {
fields.accessCode.label = t('room.settings.mod_access_code_optional');
} else {
fields.accessCode.label = t('room.settings.access_code'); fields.accessCode.label = t('room.settings.access_code');
// for the case where anyone_join_as_moderator is true and only the moderator access code is required
} else if (publicRoom.data?.anyone_join_as_moderator === 'true') {
fields.accessCode.label = t('room.settings.mod_access_code');
} else {
fields.accessCode.label = t('room.settings.mod_access_code_optional');
} }
const WaitingPage = ( const WaitingPage = (
......
...@@ -4,7 +4,7 @@ class PublicRoomSerializer < ApplicationSerializer ...@@ -4,7 +4,7 @@ class PublicRoomSerializer < ApplicationSerializer
include Avatarable include Avatarable
attributes :name, :recording_consent, :require_authentication, :viewer_access_code, :moderator_access_code, attributes :name, :recording_consent, :require_authentication, :viewer_access_code, :moderator_access_code,
:friendly_id, :owner_name, :owner_id, :owner_avatar, :shared_user_ids :anyone_join_as_moderator, :friendly_id, :owner_name, :owner_id, :owner_avatar, :shared_user_ids
def recording_consent def recording_consent
@instance_options[:options][:settings]['record'] @instance_options[:options][:settings]['record']
...@@ -22,6 +22,10 @@ class PublicRoomSerializer < ApplicationSerializer ...@@ -22,6 +22,10 @@ class PublicRoomSerializer < ApplicationSerializer
@instance_options[:options][:settings]['glModeratorAccessCode'] @instance_options[:options][:settings]['glModeratorAccessCode']
end end
def anyone_join_as_moderator
@instance_options[:options][:settings]['glAnyoneJoinAsModerator']
end
def owner_name def owner_name
object.user.name object.user.name
end end
......
...@@ -96,7 +96,7 @@ RSpec.describe Api::V1::RoomsController, type: :controller do ...@@ -96,7 +96,7 @@ RSpec.describe Api::V1::RoomsController, type: :controller do
allow(RoomSettingsGetter).to receive(:new).and_return(fake_room_settings_getter) allow(RoomSettingsGetter).to receive(:new).and_return(fake_room_settings_getter)
allow(fake_room_settings_getter).to receive(:call).and_return( allow(fake_room_settings_getter).to receive(:call).and_return(
{ 'glRequireAuthentication' => true, 'glViewerAccessCode' => true, 'glModeratorAccessCode' => false } { 'glRequireAuthentication' => true, 'glViewerAccessCode' => true, 'glModeratorAccessCode' => false, 'glAnyoneJoinAsModerator' => true }
) )
end end
...@@ -104,7 +104,11 @@ RSpec.describe Api::V1::RoomsController, type: :controller do ...@@ -104,7 +104,11 @@ RSpec.describe Api::V1::RoomsController, type: :controller do
room = create(:room, user:) room = create(:room, user:)
expect(RoomSettingsGetter).to receive(:new).with(room_id: room.id, provider: 'greenlight', current_user: nil, show_codes: false, expect(RoomSettingsGetter).to receive(:new).with(room_id: room.id, provider: 'greenlight', current_user: nil, show_codes: false,
settings: %w[glRequireAuthentication glViewerAccessCode glModeratorAccessCode record]) settings: %w[glRequireAuthentication
glViewerAccessCode
glModeratorAccessCode
record
glAnyoneJoinAsModerator])
expect(fake_room_settings_getter).to receive(:call) expect(fake_room_settings_getter).to receive(:call)
get :public_show, params: { friendly_id: room.friendly_id } get :public_show, params: { friendly_id: room.friendly_id }
...@@ -113,6 +117,7 @@ RSpec.describe Api::V1::RoomsController, type: :controller do ...@@ -113,6 +117,7 @@ RSpec.describe Api::V1::RoomsController, type: :controller do
expect(JSON.parse(response.body)['data']['require_authentication']).to be(true) expect(JSON.parse(response.body)['data']['require_authentication']).to be(true)
expect(JSON.parse(response.body)['data']['viewer_access_code']).to be(true) expect(JSON.parse(response.body)['data']['viewer_access_code']).to be(true)
expect(JSON.parse(response.body)['data']['moderator_access_code']).to be(false) expect(JSON.parse(response.body)['data']['moderator_access_code']).to be(false)
expect(JSON.parse(response.body)['data']['anyone_join_as_moderator']).to be(true)
expect(JSON.parse(response.body)['data']['owner_name']).to eq(user.name) expect(JSON.parse(response.body)['data']['owner_name']).to eq(user.name)
expect(JSON.parse(response.body)['data']['owner_avatar']).to be_present expect(JSON.parse(response.body)['data']['owner_avatar']).to be_present
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment