fix: 修复私人会话没有权限检查的问题

release/desktop
moonrailgun 3 years ago
parent 1706af2423
commit fbc071ba2e

@ -19,7 +19,9 @@
},
"pnpm": {
"peerDependencyRules": {
"ignoreMissing": ["acorn"]
"ignoreMissing": [
"acorn"
]
}
},
"lint-staged": {
@ -57,5 +59,9 @@
"prettier": "^2.3.2",
"typescript": "^4.5.2",
"vinyl-fs": "^3.0.3"
},
"dependencies": {
"crc": "^3.8.0",
"lodash": "^4.17.21"
}
}

@ -11,6 +11,7 @@ importers:
'@typescript-eslint/eslint-plugin': ^4.28.1
'@typescript-eslint/parser': ^4.28.1
commitlint: ^12.1.4
crc: ^3.8.0
dayjs: ^1.10.6
esbuild: ^0.12.25
eslint: ^7.30.0
@ -23,9 +24,13 @@ importers:
i18next-scanner: ^3.0.0
identity-obj-proxy: ^3.0.0
lint-staged: ^11.0.0
lodash: ^4.17.21
prettier: ^2.3.2
typescript: ^4.5.2
vinyl-fs: ^3.0.3
dependencies:
crc: 3.8.0
lodash: 4.17.21
devDependencies:
'@commitlint/cli': 12.1.4
'@commitlint/config-conventional': 12.1.4
@ -5379,6 +5384,9 @@ packages:
engines: {node: '>=4.8.2'}
peerDependencies:
acorn: ^6 || ^7 || ^8
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
acorn-private-class-elements: 0.2.7_acorn@8.7.1
@ -5388,6 +5396,9 @@ packages:
resolution: {integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==}
peerDependencies:
acorn: ^6.0.0
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
dev: true
@ -5411,6 +5422,9 @@ packages:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 7.4.1
dev: true
@ -5419,6 +5433,9 @@ packages:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
dev: true
@ -5436,6 +5453,9 @@ packages:
engines: {node: '>=4.8.2'}
peerDependencies:
acorn: ^6.1.0 || ^7 || ^8
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
dev: true
@ -5445,6 +5465,9 @@ packages:
engines: {node: '>=4.8.2'}
peerDependencies:
acorn: ^6 || ^7 || ^8
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
acorn-private-class-elements: 0.2.7_acorn@8.7.1
@ -5455,6 +5478,9 @@ packages:
engines: {node: '>=4.8.2'}
peerDependencies:
acorn: ^7.4 || ^8
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
acorn-class-fields: 0.3.7_acorn@8.7.1
@ -5467,6 +5493,9 @@ packages:
engines: {node: '>=4.8.2'}
peerDependencies:
acorn: ^6.1.0 || ^7 || ^8
peerDependenciesMeta:
acorn:
optional: true
dependencies:
acorn: 8.7.1
acorn-private-class-elements: 0.2.7_acorn@8.7.1

@ -8,13 +8,19 @@ import { appendUserDMConverse } from '../model/user';
*
*/
export async function ensureDMConverse(
converseId: string
converseId: string,
currentUserId: string
): Promise<ChatConverseInfo> {
const converse = await getCachedConverseInfo(converseId);
if (converse === null) {
// TODO
throw new Error(t('找不到私信会话'));
}
if (!converse.members.includes(currentUserId)) {
throw new Error(t('会话没有权限'));
}
await appendUserDMConverse(converseId); // 添加到私人会话列表
return converse;

@ -206,6 +206,7 @@
"kdd4c838c": "Jump to Group",
"kdd6c18f8": "Service exception",
"kdef84ee6": "Plugin",
"kdf6e53ca": "Converse does not have permission",
"ke17b2c87": "Do not upload pictures that violate local laws and regulations",
"ke187440d": "Panel type cannot be empty",
"kecb51e2c": "Old password",

@ -206,6 +206,7 @@
"kdd4c838c": "跳转到群组",
"kdd6c18f8": "服务异常",
"kdef84ee6": "插件",
"kdf6e53ca": "会话没有权限",
"ke17b2c87": "请勿上传违反当地法律法规的图片",
"ke187440d": "面板类型不能为空",
"kecb51e2c": "旧密码",

@ -89,6 +89,7 @@ export function useConverseMessage(context: ConverseContext) {
const hasMoreMessage = converse?.hasMoreMessage ?? true;
const dispatch = useAppDispatch();
const messages = converse?.messages ?? [];
const currentUserId = useAppSelector((state) => state.user.info?._id);
useEffect(() => {
dispatch(chatActions.updateCurrentConverseId(converseId));
@ -105,7 +106,7 @@ export function useConverseMessage(context: ConverseContext) {
if (!isGroup) {
// 如果是私信会话
// Step 1. 创建会话 并确保私信列表中存在该会话
const converse = await ensureDMConverse(converseId);
const converse = await ensureDMConverse(converseId, currentUserId);
dispatch(chatActions.setConverseInfo(converse));
} else {
// 如果是群组会话(文本频道)
@ -145,7 +146,7 @@ export function useConverseMessage(context: ConverseContext) {
);
}
}
}, [converseId, reconnectNum]);
}, [converseId, reconnectNum, currentUserId]);
// 加载更多消息
const [{ loading: isLoadingMore }, handleFetchMoreMessage] =

@ -5,6 +5,7 @@ import { t } from 'tailchat-shared';
/**
*
* @deprecated 使 ErrorView
*/
export const AlertErrorView: React.FC<{
error: Error;

@ -1,6 +1,6 @@
import React from 'react';
import { ChatBoxContextProvider, useConverseMessage } from 'tailchat-shared';
import { AlertErrorView } from '../AlertErrorView';
import { ErrorView } from '../ErrorView';
import { ChatBoxPlaceholder } from './ChatBoxPlaceholder';
import { ChatInputBox } from './ChatInputBox';
import { ChatMessageList } from './ChatMessageList';
@ -40,7 +40,7 @@ const ChatBoxInner: React.FC<ChatBoxProps> = React.memo((props) => {
}
if (error) {
return <AlertErrorView error={error} />;
return <ErrorView error={error} />;
}
return (

@ -0,0 +1,12 @@
import React from 'react';
import { Problem } from './Problem';
/**
*
*/
export const ErrorView: React.FC<{
error: Error;
}> = React.memo(({ error }) => {
return <Problem text={String(error.message ?? error.name ?? error)} />;
});
ErrorView.displayName = 'ErrorView';
Loading…
Cancel
Save