From d30cae05c7b59c7b7dfef74ee7a62908445e652c Mon Sep 17 00:00:00 2001 From: LinkinStar Date: Fri, 25 Nov 2022 14:59:52 +0800 Subject: [PATCH] fix: incorrect answer permission setting --- internal/controller/answer_controller.go | 7 +++---- internal/schema/answer_schema.go | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/internal/controller/answer_controller.go b/internal/controller/answer_controller.go index 9fd43b4c..c1b658e0 100644 --- a/internal/controller/answer_controller.go +++ b/internal/controller/answer_controller.go @@ -158,7 +158,6 @@ func (ac *AnswerController) Update(ctx *gin.Context) { return } req.UserID = middleware.GetLoginUserIDFromContext(ctx) - req.IsAdmin = middleware.GetIsAdminFromContext(ctx) canList, err := ac.rankService.CheckOperationPermissions(ctx, req.UserID, []string{ rank.AnswerEditRank, @@ -168,11 +167,12 @@ func (ac *AnswerController) Update(ctx *gin.Context) { handler.HandleResponse(ctx, err, nil) return } - if !canList[0] { + req.CanEdit = canList[0] + req.NoNeedReview = canList[1] + if !req.CanEdit { handler.HandleResponse(ctx, errors.Forbidden(reason.RankFailToMeetTheCondition), nil) return } - req.NoNeedReview = canList[1] _, err = ac.answerService.Update(ctx, req) if err != nil { @@ -211,7 +211,6 @@ func (ac *AnswerController) AnswerList(ctx *gin.Context) { return } req.UserID = middleware.GetLoginUserIDFromContext(ctx) - req.IsAdmin = middleware.GetIsAdminFromContext(ctx) canList, err := ac.rankService.CheckOperationPermissions(ctx, req.UserID, []string{ rank.AnswerEditRank, diff --git a/internal/schema/answer_schema.go b/internal/schema/answer_schema.go index ed80aed6..ef886b4d 100644 --- a/internal/schema/answer_schema.go +++ b/internal/schema/answer_schema.go @@ -31,6 +31,8 @@ type AnswerUpdateReq struct { EditSummary string `validate:"omitempty" json:"edit_summary"` // edit_summary IsAdmin bool `json:"-"` NoNeedReview bool `json:"-"` + // whether user can edit it + CanEdit bool `json:"-"` } type AnswerListReq struct {