Skip to content

feat: decouple datasource connectivity from privilege checks - #658

Open
LordofAvernus wants to merge 2 commits into
mainfrom
dms/feat-950
Open

feat: decouple datasource connectivity from privilege checks#658
LordofAvernus wants to merge 2 commits into
mainfrom
dms/feat-950

Conversation

@LordofAvernus

@LordofAvernus LordofAvernus commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

User description

关联的 issue

https://github.com/actiontech/dms-ee/issues/950

描述你的变更

  • Decouple IsConnectable from privilege checks in DMS
  • Add privilege reply field mapping and unit tests for allowlist/plugin exemption paths

确认项(pr提交后操作)

Tip

请在指定复审人之前,确认并完成以下事项,完成后✅


  • 我已完成自测
  • 我已记录完整日志方便进行诊断
  • 我已在关联的issue里补充了实现方案
  • 我已在关联的issue里补充了测试影响面
  • 我已确认了变更的兼容性,如果不兼容则在issue里标记 not_compatible
  • 我已确认了是否要更新文档,如果要更新则在issue里标记 need_update_doc

Made with Cursor


Description

  • 新增数据库服务权限回复及数据结构

  • 修改连通性检测中插件错误处理逻辑

  • 增加自动权限检测与允许列表处理

  • 添加单元测试覆盖多种数据库场景


Diagram Walkthrough

flowchart LR
  A["新增权限数据结构定义"]
  B["修改连接错误处理逻辑"]
  C["新增自动权限检测方法"]
  D["更新项目权限映射接口"]
  E["新增单元测试验证"]
  A -- "支撑自动检测" --> C
  B -- "插件错误特殊处理" --> C
  C -- "结果映射" --> D
  D -- "覆盖场景" --> E
Loading

File Walkthrough

Relevant files
Enhancement
4 files
project.go
更新权限回复数据结构及映射类型                                                                                   
+27/-3   
db_service.go
增加插件检测及自动权限检查逻辑                                                                                   
+171/-13
project.go
更新项目服务权限映射处理逻辑                                                                                     
+36/-15 
router.go
新增获取权限路由映射接口                                                                                         
+4/-0     
Tests
2 files
db_service_connectivity_privilege_test.go
添加连通性与权限检测单元测试                                                                                     
+124/-0 
project_privilege_reply_test.go
添加权限回复映射功能测试                                                                                         
+88/-0   
Documentation
1 files
code_review_manifest.json
新增代码审核清单配置文件                                                                                         
+6/-0     

Split IsConnectable and privilege reply semantics; add unit tests for plugin
exemption, allowlist unsupported path, and privilege reply field mapping.
@github-actions

Copy link
Copy Markdown

PR Reviewer Guide 🔍

⏱️ Estimated effort to review: 4 🔵🔵🔵🔵⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected

@github-actions

Copy link
Copy Markdown

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
添加空指针检查

在调用 target.URL.String() 之前需要检查 targettarget.URL 是否为 nil,否则可能会引发空指针 panic。建议添加一个
nil 检查,确保在 URL 有效后再继续调用。

internal/dms/biz/db_service.go [1038-1043]

 header := map[string]string{
 	"Authorization": pkgHttp.DefaultDMSToken,
+}
+if target == nil || target.URL == nil {
+	return nil, fmt.Errorf("invalid proxy target or URL is nil")
 }
 uri := dmsCommonV1.GetDBServicePrivilegesRouter()
 reply := &provisionModulePrivilegesReply{}
 err = pkgHttp.POST(ctx, fmt.Sprintf("%s%s", target.URL.String(), uri), header, param, reply)
Suggestion importance[1-10]: 7

__

Why: 该建议在调用 target.URL.String() 前增加了 nil 检查以防止潜在的空指针 panic,从而增强了安全性,但影响仅限于错误处理逻辑。

Medium

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant