feat(dialog): 系统设置支持禁止其他人员设置/取消聊天待办
新增系统级开关 todo_set_permission(open=允许默认 / close=禁止)。 开关为禁止时,仅本人、群主/群管理员、项目负责人/项目管理员、任务负责人 可设置或取消聊天消息待办,其他人由后端拦截;默认允许,保持现有行为。 - SystemController::setting 接入开关读写(白名单 + 默认 open) - WebSocketDialog::checkTodoOwnerPermission 角色判断(复用 isOwner 等) - WebSocketDialogMsg::toggleTodoMsg 内权限闸门:close 且影响到他人且 非放行角色时 retError;仅影响自己始终放行;open 时行为零变化 - SystemSetting.vue「消息相关」新增「待办设置权限」开关 UI - 国际化文案(original-api.txt / original-web.txt) - TodoSetPermissionTest 覆盖角色判断、闸门决策及真实拦截路径(8 用例) 任务 #124。系统后台 admin 不特殊放行;「完成待办」不在本次范围。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -95,6 +95,7 @@ class SystemController extends AbstractController
|
||||
'unclaimed_task_reminder_time',
|
||||
'task_ai_auto_analyze',
|
||||
'department_owner_project_view',
|
||||
'todo_set_permission',
|
||||
])) {
|
||||
unset($all[$key]);
|
||||
}
|
||||
@@ -142,6 +143,7 @@ class SystemController extends AbstractController
|
||||
$setting['archived_day'] = floatval($setting['archived_day']) ?: 7;
|
||||
$setting['task_visible'] = $setting['task_visible'] ?: 'close';
|
||||
$setting['all_group_mute'] = $setting['all_group_mute'] ?: 'open';
|
||||
$setting['todo_set_permission'] = $setting['todo_set_permission'] ?: 'open';
|
||||
$setting['all_group_autoin'] = $setting['all_group_autoin'] ?: 'yes';
|
||||
$setting['user_private_chat_mute'] = $setting['user_private_chat_mute'] ?: 'open';
|
||||
$setting['user_group_chat_mute'] = $setting['user_group_chat_mute'] ?: 'open';
|
||||
|
||||
Reference in New Issue
Block a user