From f9309d93379ad59dea8172e68dd7ce9707ac7934 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat Date: Thu, 30 Jan 2025 14:10:48 -0500 Subject: [PATCH] Added a site setting to hide 'Already have an account? Sign in' (#5985) * Added a site setting to hide 'Already have an account? Sign in' * Eslint --- app/assets/locales/en.json | 4 +++- .../registration/Registration.jsx | 15 +++++++++++- .../components/rooms/room/join/JoinCard.jsx | 4 +++- app/services/tenant_setup.rb | 3 ++- ...d_sign_in_on_room_join_to_site_settings.rb | 23 +++++++++++++++++++ db/data_schema.rb | 2 +- .../admin/tenants_controller_spec.rb | 1 + 7 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 db/data/20250130160334_add_sign_in_on_room_join_to_site_settings.rb diff --git a/app/assets/locales/en.json b/app/assets/locales/en.json index 665d511926..b4447a1e2c 100644 --- a/app/assets/locales/en.json +++ b/app/assets/locales/en.json @@ -296,7 +296,9 @@ "allow_users_to_share_rooms": "Allow Users to Share Rooms", "allow_users_to_share_rooms_description": "Setting to disabled will remove the button from the room options dropdown, preventing users from sharing rooms", "allow_users_to_preupload_presentation": "Allow Users to Preupload Presentations", - "allow_users_to_preupload_presentation_description": "Users can preupload a presentation to be used as the default presentation for that specific room", + "allow_users_to_preupload_presentation_description": "Users can preupload a presentation to be used as the default presentation for that specific room", "allow_users_to_preupload_presentation": "Allow Users to Preupload Presentations", + "show_sign_in_on_room_join": "Show Sign In Link on Room Join", + "show_sign_in_on_room_join_description": "If the user is not signed in, a sign-in link appears at the bottom of the card when entering a room", "default_visibility": "Default Recording Visibility", "default_visibility_description": "All newly created recordings will have this visibility by default", "session_timeout": "Session Timeout", diff --git a/app/javascript/components/admin/site_settings/registration/Registration.jsx b/app/javascript/components/admin/site_settings/registration/Registration.jsx index 764e5b00f5..7f06a79569 100644 --- a/app/javascript/components/admin/site_settings/registration/Registration.jsx +++ b/app/javascript/components/admin/site_settings/registration/Registration.jsx @@ -28,7 +28,9 @@ import useRoles from '../../../../hooks/queries/admin/roles/useRoles'; export default function Registration() { const { t } = useTranslation(); const { data: env } = useEnv(); - const { data: siteSettings } = useSiteSettings(['RoleMapping', 'DefaultRole', 'ResyncOnLogin', 'RegistrationMethod', 'AllowedDomains']); + const { data: siteSettings } = useSiteSettings( + ['RoleMapping', 'DefaultRole', 'ResyncOnLogin', 'SignInOnRoomJoin', 'RegistrationMethod', 'AllowedDomains'], + ); const { data: roles } = useRoles(); const updateRegistrationMethod = useUpdateSiteSetting('RegistrationMethod'); const updateDefaultRole = useUpdateSiteSetting('DefaultRole'); @@ -82,6 +84,17 @@ export default function Registration() { } + + {t('admin.site_settings.settings.show_sign_in_on_room_join_description')} +

+ )} + value={siteSettings?.SignInOnRoomJoin} + /> + { t('admin.site_settings.registration.role_mapping_by_email') }

{ t('admin.site_settings.registration.role_mapping_by_email_description') }

diff --git a/app/javascript/components/rooms/room/join/JoinCard.jsx b/app/javascript/components/rooms/room/join/JoinCard.jsx index 873a3dfa9e..3a8f00edc9 100644 --- a/app/javascript/components/rooms/room/join/JoinCard.jsx +++ b/app/javascript/components/rooms/room/join/JoinCard.jsx @@ -44,6 +44,7 @@ import ButtonLink from '../../../shared_components/utilities/ButtonLink'; import Title from '../../../shared_components/utilities/Title'; import useRoomConfigValue from '../../../../hooks/queries/rooms/useRoomConfigValue'; import usePublicRecordings from '../../../../hooks/queries/recordings/usePublicRecordings'; +import useSiteSetting from '../../../../hooks/queries/site_settings/useSiteSetting'; export default function JoinCard() { const { t } = useTranslation(); @@ -58,6 +59,7 @@ export default function JoinCard() { const { data: env } = useEnv(); const { data: recordValue } = useRoomConfigValue('record'); + const { data: signInOnRoomJoin } = useSiteSetting('SignInOnRoomJoin'); const { methods, fields } = useRoomJoinForm(); @@ -272,7 +274,7 @@ export default function JoinCard() { )}
- {!currentUser?.signed_in && ( + { signInOnRoomJoin && !currentUser?.signed_in && ( env?.EXTERNAL_AUTH ? ( {t('authentication.already_have_account')} diff --git a/app/services/tenant_setup.rb b/app/services/tenant_setup.rb index 2bad739f9c..e0da77e1cf 100644 --- a/app/services/tenant_setup.rb +++ b/app/services/tenant_setup.rb @@ -57,7 +57,8 @@ def create_site_settings { setting: Setting.find_by(name: 'DefaultRecordingVisibility'), provider: @provider, value: 'Published' }, { setting: Setting.find_by(name: 'Maintenance'), provider: @provider, value: '' }, { setting: Setting.find_by(name: 'SessionTimeout'), provider: @provider, value: '1' }, - { setting: Setting.find_by(name: 'AllowedDomains'), value: '', provider: @provider } + { setting: Setting.find_by(name: 'AllowedDomains'), value: '', provider: @provider }, + { setting: Setting.find_by(name: 'SignInOnRoomJoin'), value: 'true', provider: @provider } ] end diff --git a/db/data/20250130160334_add_sign_in_on_room_join_to_site_settings.rb b/db/data/20250130160334_add_sign_in_on_room_join_to_site_settings.rb new file mode 100644 index 0000000000..cc9f05678e --- /dev/null +++ b/db/data/20250130160334_add_sign_in_on_room_join_to_site_settings.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class AddSignInOnRoomJoinToSiteSettings < ActiveRecord::Migration[7.1] + def up + setting = Setting.find_or_create_by(name: 'SignInOnRoomJoin') + + SiteSetting.create!(setting:, value: 'true', provider: 'greenlight') unless SiteSetting.exists?(setting:, provider: 'greenlight') + + Tenant.find_each do |tenant| + SiteSetting.create!(setting:, value: 'true', provider: tenant.name) unless SiteSetting.exists?(setting:, provider: tenant.name) + end + end + + def down + Tenant.find_each do |tenant| + SiteSetting.find_by(setting: Setting.find_by(name: 'SignInOnRoomJoin'), provider: tenant.name)&.destroy + end + + SiteSetting.find_by(setting: Setting.find_by(name: 'SignInOnRoomJoin'), provider: 'greenlight')&.destroy + + Setting.find_by(name: 'SignInOnRoomJoin')&.destroy + end +end diff --git a/db/data_schema.rb b/db/data_schema.rb index 5f04068525..9fd38da745 100644 --- a/db/data_schema.rb +++ b/db/data_schema.rb @@ -1 +1 @@ -DataMigrate::Data.define(version: 20240812210436) +DataMigrate::Data.define(version: 20250130160334) diff --git a/spec/controllers/admin/tenants_controller_spec.rb b/spec/controllers/admin/tenants_controller_spec.rb index a54876a60d..a2c099b72c 100644 --- a/spec/controllers/admin/tenants_controller_spec.rb +++ b/spec/controllers/admin/tenants_controller_spec.rb @@ -147,6 +147,7 @@ def create_settings_permissions_meetingoptions Setting.find_or_create_by(name: 'Maintenance') Setting.find_or_create_by(name: 'SessionTimeout') Setting.find_or_create_by(name: 'AllowedDomains') + Setting.find_or_create_by(name: 'SignInOnRoomJoin') Permission.find_or_create_by(name: 'CreateRoom') Permission.find_or_create_by(name: 'ManageUsers')