This is an automated email from the ASF dual-hosted git repository.
linkinstar pushed a commit to branch feat/1.3.0/review
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git
The following commit(s) were added to refs/heads/feat/1.3.0/review by this push:
new 4467174f feat(review): add review permission
4467174f is described below
commit 4467174f8086268e8681fffd79139cc2a3ea2c3d
Author: LinkinStars <[email protected]>
AuthorDate: Thu Mar 14 10:31:46 2024 +0800
feat(review): add review permission
---
internal/controller/report_controller.go | 9 +++++++--
internal/controller/review_controller.go | 11 +++++++++--
internal/schema/report_schema.go | 5 ++++-
internal/schema/review_schema.go | 2 ++
internal/service/report/report_service.go | 3 +++
internal/service/review/review_service.go | 3 +++
6 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/internal/controller/report_controller.go
b/internal/controller/report_controller.go
index 484c7516..75ceb823 100644
--- a/internal/controller/report_controller.go
+++ b/internal/controller/report_controller.go
@@ -120,7 +120,8 @@ func (rc *ReportController) GetUnreviewedReportPostPage(ctx
*gin.Context) {
return
}
- // TODO: check permission
+ req.UserID = middleware.GetLoginUserIDFromContext(ctx)
+ req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
resp, err := rc.reportService.GetUnreviewedReportPostPage(ctx, req)
handler.HandleResponse(ctx, err, resp)
@@ -143,8 +144,12 @@ func (rc *ReportController) ReviewReport(ctx *gin.Context)
{
return
}
- // TODO: check permission
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
+ req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
+ if !req.IsAdmin {
+ handler.HandleResponse(ctx,
errors.Forbidden(reason.ForbiddenError), nil)
+ return
+ }
err := rc.reportService.ReviewReport(ctx, req)
handler.HandleResponse(ctx, err, nil)
diff --git a/internal/controller/review_controller.go
b/internal/controller/review_controller.go
index 967a2a16..435cefa7 100644
--- a/internal/controller/review_controller.go
+++ b/internal/controller/review_controller.go
@@ -22,12 +22,14 @@ package controller
import (
"github.com/apache/incubator-answer/internal/base/handler"
"github.com/apache/incubator-answer/internal/base/middleware"
+ "github.com/apache/incubator-answer/internal/base/reason"
"github.com/apache/incubator-answer/internal/schema"
"github.com/apache/incubator-answer/internal/service/action"
"github.com/apache/incubator-answer/internal/service/rank"
"github.com/apache/incubator-answer/internal/service/review"
"github.com/apache/incubator-answer/plugin"
"github.com/gin-gonic/gin"
+ "github.com/segmentfault/pacman/errors"
)
// ReviewController review controller
@@ -67,7 +69,8 @@ func (rc *ReviewController) GetUnreviewedPostPage(ctx
*gin.Context) {
return
}
- // TODO: check permission
+ req.UserID = middleware.GetLoginUserIDFromContext(ctx)
+ req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
req.ReviewerMapping = make(map[string]string)
_ = plugin.CallReviewer(func(base plugin.Reviewer) error {
@@ -97,8 +100,12 @@ func (rc *ReviewController) UpdateReview(ctx *gin.Context) {
return
}
- // TODO: check permission
req.UserID = middleware.GetLoginUserIDFromContext(ctx)
+ req.IsAdmin = middleware.GetUserIsAdminModerator(ctx)
+ if !req.IsAdmin {
+ handler.HandleResponse(ctx,
errors.Forbidden(reason.ForbiddenError), nil)
+ return
+ }
err := rc.reviewService.UpdateReview(ctx, req)
handler.HandleResponse(ctx, err, nil)
diff --git a/internal/schema/report_schema.go b/internal/schema/report_schema.go
index 908e0451..b80e7c26 100644
--- a/internal/schema/report_schema.go
+++ b/internal/schema/report_schema.go
@@ -93,7 +93,9 @@ type GetReportListPageResp struct {
// GetUnreviewedReportPostPageReq get unreviewed report post page request
type GetUnreviewedReportPostPageReq struct {
- Page int `json:"page" form:"page"`
+ Page int `json:"page" form:"page"`
+ UserID string `json:"-"`
+ IsAdmin bool `json:"-"`
}
// ReviewReportReq review report request
@@ -106,4 +108,5 @@ type ReviewReportReq struct {
Content string `validate:"omitempty,notblank,gte=6,lte=65535"
json:"content"`
Tags []*TagItem `validate:"omitempty,dive" json:"tags"`
UserID string `json:"-"`
+ IsAdmin bool `json:"-"`
}
diff --git a/internal/schema/review_schema.go b/internal/schema/review_schema.go
index bda52204..556e4df3 100644
--- a/internal/schema/review_schema.go
+++ b/internal/schema/review_schema.go
@@ -10,6 +10,7 @@ type UpdateReviewReq struct {
ReviewID int `validate:"required" json:"review_id"`
Status string `validate:"required,oneof=approve reject" json:"status"`
UserID string `json:"-"`
+ IsAdmin bool `json:"-"`
}
func (r *UpdateReviewReq) IsApprove() bool {
@@ -26,6 +27,7 @@ type GetUnreviewedPostPageReq struct {
Page int `validate:"omitempty" form:"page"`
ReviewerMapping map[string]string `json:"-"`
UserID string `json:"-"`
+ IsAdmin bool `json:"-"`
}
func (r *GetUnreviewedPostPageReq) Check() (errField
[]*validator.FormErrorField, err error) {
diff --git a/internal/service/report/report_service.go
b/internal/service/report/report_service.go
index b59e762f..8b9d28f7 100644
--- a/internal/service/report/report_service.go
+++ b/internal/service/report/report_service.go
@@ -106,6 +106,9 @@ func (rs *ReportService) AddReport(ctx context.Context, req
*schema.AddReportReq
// GetUnreviewedReportPostPage get unreviewed report post page
func (rs *ReportService) GetUnreviewedReportPostPage(ctx context.Context, req
*schema.GetUnreviewedReportPostPageReq) (
pageModel *pager.PageModel, err error) {
+ if !req.IsAdmin {
+ return pager.NewPageModel(0,
make([]*schema.GetReportListPageResp, 0)), nil
+ }
lang := handler.GetLangByCtx(ctx)
reports, total, err := rs.reportRepo.GetReportListPage(ctx,
&schema.GetReportListPageDTO{
Page: req.Page,
diff --git a/internal/service/review/review_service.go
b/internal/service/review/review_service.go
index 217a8877..bb58f011 100644
--- a/internal/service/review/review_service.go
+++ b/internal/service/review/review_service.go
@@ -326,6 +326,9 @@ func (cs *ReviewService) GetReviewPendingCount(ctx
context.Context) (count int64
// GetUnreviewedPostPage get review page
func (cs *ReviewService) GetUnreviewedPostPage(ctx context.Context, req
*schema.GetUnreviewedPostPageReq) (
pageModel *pager.PageModel, err error) {
+ if !req.IsAdmin {
+ return pager.NewPageModel(0,
make([]*schema.GetUnreviewedPostPageResp, 0)), nil
+ }
cond := &entity.Review{
ObjectID: req.ObjectID,
Status: entity.ReviewStatusPending,