MCPcopy
hub / github.com/apache/answer / RemoveAnswer

Method RemoveAnswer

internal/controller/answer_controller.go:79–118  ·  view source on GitHub ↗

RemoveAnswer delete answer @Summary delete answer @Description delete answer @Tags Answer @Accept json @Produce json @Security ApiKeyAuth @Param data body schema.RemoveAnswerReq true "answer" @Success 200 {object} handler.RespBody @Router /answer/api/v1/answer [delete]

(ctx *gin.Context)

Source from the content-addressed store, hash-verified

77// @Success 200 {object} handler.RespBody
78// @Router /answer/api/v1/answer [delete]
79func (ac *AnswerController) RemoveAnswer(ctx *gin.Context) {
80 req := &schema.RemoveAnswerReq{}
81 if handler.BindAndCheck(ctx, req) {
82 return
83 }
84 req.ID = uid.DeShortID(req.ID)
85 req.UserID = middleware.GetLoginUserIDFromContext(ctx)
86 isAdmin := middleware.GetUserIsAdminModerator(ctx)
87 if !isAdmin {
88 captchaPass := ac.actionService.ActionRecordVerifyCaptcha(ctx, entity.CaptchaActionDelete, req.UserID, req.CaptchaID, req.CaptchaCode)
89 if !captchaPass {
90 errFields := append([]*validator.FormErrorField{}, &validator.FormErrorField{
91 ErrorField: "captcha_code",
92 ErrorMsg: translator.Tr(handler.GetLangByCtx(ctx), reason.CaptchaVerificationFailed),
93 })
94 handler.HandleResponse(ctx, errors.BadRequest(reason.CaptchaVerificationFailed), errFields)
95 return
96 }
97 }
98
99 objectOwner := ac.rankService.CheckOperationObjectOwner(ctx, req.UserID, req.ID)
100 canList, err := ac.rankService.CheckOperationPermissions(ctx, req.UserID, []string{
101 permission.AnswerDelete,
102 })
103 if err != nil {
104 handler.HandleResponse(ctx, err, nil)
105 return
106 }
107 req.CanDelete = canList[0] || objectOwner
108 if !req.CanDelete {
109 handler.HandleResponse(ctx, errors.Forbidden(reason.RankFailToMeetTheCondition), nil)
110 return
111 }
112
113 err = ac.answerService.RemoveAnswer(ctx, req)
114 if !isAdmin {
115 ac.actionService.ActionRecordAdd(ctx, entity.CaptchaActionDelete, req.UserID)
116 }
117 handler.HandleResponse(ctx, err, nil)
118}
119
120// RecoverAnswer recover answer
121// @Summary recover answer

Callers

nothing calls this directly

Calls 12

BindAndCheckFunction · 0.92
DeShortIDFunction · 0.92
GetUserIsAdminModeratorFunction · 0.92
TrFunction · 0.92
GetLangByCtxFunction · 0.92
HandleResponseFunction · 0.92
ActionRecordAddMethod · 0.80
RemoveAnswerMethod · 0.65

Tested by

no test coverage detected