From d0de85612b733771cf142f25adc40cbafe3c4c64 Mon Sep 17 00:00:00 2001 From: Anirban Singha Date: Sun, 12 Jan 2025 21:57:46 +0530 Subject: [PATCH] fix: ensure messageBox and Toolbar are not visible to unauthorized users in read-only room --- .../react/src/views/ChatHeader/ChatHeader.js | 9 ++++--- .../react/src/views/ChatInput/ChatInput.js | 27 +++++++++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/packages/react/src/views/ChatHeader/ChatHeader.js b/packages/react/src/views/ChatHeader/ChatHeader.js index 5f2dbf43ee..080f391f95 100644 --- a/packages/react/src/views/ChatHeader/ChatHeader.js +++ b/packages/react/src/views/ChatHeader/ChatHeader.js @@ -154,19 +154,20 @@ const ChatHeader = ({ }; const setMessageAllowed = async () => { - const permissionRes = await RCInstance.permissionInfo(); const channelRolesRes = await RCInstance.getChannelRoles( isChannelPrivate ); - if (permissionRes.success && channelRolesRes.success) { - const postMsgRoles = permissionRes.update[140]?.roles || []; + if (channelRolesRes.success) { const channelLevelRoles = channelRolesRes.roles .filter((chRole) => chRole.u?._id === authenticatedUserId) .flatMap((chRole) => chRole.roles); const allRoles = [...channelLevelRoles, ...workspaceLevelRoles]; - const canSendMsg = postMsgRoles.some((role) => allRoles.includes(role)); + const canSendMsg = + allRoles.includes('admin') || + allRoles.includes('moderator') || + allRoles.includes('owner'); setCanSendMsg(canSendMsg); } diff --git a/packages/react/src/views/ChatInput/ChatInput.js b/packages/react/src/views/ChatInput/ChatInput.js index 33f40d7af3..192d942cd9 100644 --- a/packages/react/src/views/ChatInput/ChatInput.js +++ b/packages/react/src/views/ChatInput/ChatInput.js @@ -465,7 +465,7 @@ const ChatInput = ({ scrollToBottom }) => { status={ editMessage.msg || editMessage.attachments ? 'Editing Message' - : isChannelReadOnly + : isChannelReadOnly && canSendMsg && isUserAuthenticated ? 'This room is read only' : undefined } @@ -529,7 +529,10 @@ const ChatInput = ({ scrollToBottom }) => { ? 'This room is read only' : 'Sign in to chat' } - css={styles.textInput} + css={css` + ${styles.textInput} + ${!canSendMsg && isUserAuthenticated && `text-align: center;`} + `} onChange={onTextChange} onBlur={() => { sendTypingStop(); @@ -547,14 +550,16 @@ const ChatInput = ({ scrollToBottom }) => { `} > {isUserAuthenticated ? ( - sendMessage()} - type="primary" - disabled={disableButton || isRecordingMessage} - icon="send" - /> + canSendMsg ? ( + sendMessage()} + type="primary" + disabled={disableButton || isRecordingMessage} + icon="send" + /> + ) : null ) : (