Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions internal/bff-service/service/knowledge_keywords.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,17 @@ func UpdateKnowledgeKeywords(ctx *gin.Context, userId, orgId string, r *request.
}

func DeleteDocCategoryKeywords(ctx *gin.Context, userId, orgId string, r *request.DeleteKeywordsReq) error {
// 删除前校验关键词归属:detail 接口已按 (org,user) 鉴权,非本租户的关键词会返回错误,
// 以此拦截跨租户删除(DeleteKnowledgeKeywords 请求自身不携带调用方身份)。
if _, err := knowledgeBaseKeywords.GetKnowledgeKeywordsDetail(ctx.Request.Context(), &knowledgebase_keywords_service.GetKnowledgeKeywordsDetailReq{
Id: r.Id,
Identity: &knowledgebase_keywords_service.Identity{
UserId: userId,
OrgId: orgId,
},
}); err != nil {
return err
}
_, err := knowledgeBaseKeywords.DeleteKnowledgeKeywords(ctx.Request.Context(), &knowledgebase_keywords_service.DeleteKnowledgeKeywordsReq{
Id: r.Id,
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,13 @@ func (s *Service) GetKnowledgeKeywordsDetail(ctx context.Context, req *knowledge
log.Errorf(fmt.Sprintf("GetKnowledgeKeywords 失败(%v) 参数(%v)", err, req))
return nil, util.ErrCode(errs.Code_KnowledgeKeywordsInfoFailed)
}
// 校验关键词归属:仅允许访问本租户(org+user)的关键词,避免按 id 跨租户越权读取。
// 列表/重复校验接口已通过 WithPermit(org,user) 做此限制,此 detail 接口此前遗漏。
if keywords.OrgId != req.Identity.OrgId || keywords.UserId != req.Identity.UserId {
log.Errorf(fmt.Sprintf("GetKnowledgeKeywordsDetail 跨租户越权: keyword(org=%v,user=%v) caller(org=%v,user=%v)",
keywords.OrgId, keywords.UserId, req.Identity.OrgId, req.Identity.UserId))
return nil, util.ErrCode(errs.Code_KnowledgeKeywordsInfoFailed)
}
// 构造返回体
keywordsInfo, err := buildKeywordsInfo(ctx, keywords)
if err != nil {
Expand Down