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')