fix admin update question

This commit is contained in:
aichy126 2022-11-23 11:38:39 +08:00
parent 7f7d11f58c
commit 5b005e652f
1 changed files with 28 additions and 28 deletions

View File

@ -270,13 +270,40 @@ func (qs *QuestionService) UpdateQuestion(ctx context.Context, req *schema.Quest
if !has {
return
}
// If it's not admin
if !req.IsAdmin {
if dbinfo.UserID != req.UserID {
return questionInfo, errors.BadRequest(reason.QuestionCannotUpdate)
}
}
//CheckChangeTag
oldTags, tagerr := qs.tagCommon.GetObjectEntityTag(ctx, question.ID)
if err != nil {
return questionInfo, tagerr
}
tagNameList := make([]string, 0)
for _, tag := range req.Tags {
tagNameList = append(tagNameList, tag.SlugName)
}
Tags, tagerr := qs.tagCommon.GetTagListByNames(ctx, tagNameList)
if err != nil {
return questionInfo, tagerr
}
CheckTag, CheckTaglist := qs.CheckChangeReservedTag(ctx, oldTags, Tags)
if !CheckTag {
errMsg := fmt.Sprintf(`The reserved tag %s must be present.`,
strings.Join(CheckTaglist, ","))
errorlist := make([]*validator.FormErrorField, 0)
errorlist = append(errorlist, &validator.FormErrorField{
ErrorField: "tags",
ErrorMsg: errMsg,
})
err = errors.BadRequest(reason.RequestFormatError).WithMsg(errMsg)
return errorlist, err
}
}
// Check whether mandatory labels are selected
recommendExist, err := qs.tagCommon.ExistRecommend(ctx, req.Tags)
if err != nil {
return
@ -291,33 +318,6 @@ func (qs *QuestionService) UpdateQuestion(ctx context.Context, req *schema.Quest
return errorlist, err
}
//CheckChangeTag
oldTags, err := qs.tagCommon.GetObjectEntityTag(ctx, question.ID)
if err != nil {
return
}
tagNameList := make([]string, 0)
for _, tag := range req.Tags {
tagNameList = append(tagNameList, tag.SlugName)
}
Tags, err := qs.tagCommon.GetTagListByNames(ctx, tagNameList)
if err != nil {
return
}
CheckTag, CheckTaglist := qs.CheckChangeReservedTag(ctx, oldTags, Tags)
if !CheckTag {
errMsg := fmt.Sprintf(`The reserved tag %s must be present.`,
strings.Join(CheckTaglist, ","))
errorlist := make([]*validator.FormErrorField, 0)
errorlist = append(errorlist, &validator.FormErrorField{
ErrorField: "tags",
ErrorMsg: errMsg,
})
err = errors.BadRequest(reason.RequestFormatError).WithMsg(errMsg)
return errorlist, err
}
//update question to db
err = qs.questionRepo.UpdateQuestion(ctx, question, []string{"title", "original_text", "parsed_text", "updated_at"})
if err != nil {