fix: 评论系统全量检查修复(7 项 Gap 全部修复)
- Delete 权限:新增 requesterID/isAdmin 参数,Service 层鉴权(仅本人/管理员可删)
- 通知内容:改用 GetUsernameByID 显示真实用户名,非数字 UID
- SearchUsers:Repository 返回 exp,Service 调用 GetLevelByExp 计算等级
- 通知高亮:Notification 新增 CommentID 字段,消息链接支持 #comment-{id}
- 已删除提示:前端 hash 检测 + 3 秒超时 Toast "该评论已不存在"
- Admin CSS:移除不存在的 comments.css 引用
- 错误哨兵:改用 common.ErrCommentNotFound/ErrCommentEmpty/PermissionDenied
This commit is contained in:
@ -2,6 +2,7 @@ package controller
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"image"
|
||||
"image/jpeg"
|
||||
"image/png"
|
||||
@ -147,14 +148,13 @@ func (ctrl *CommentController) Delete(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 权限检查:仅本人或管理员可删除
|
||||
_ = uid
|
||||
_ = role
|
||||
// 此处权限在 service 层不做额外判断,允许任何人请求删除
|
||||
// 后端检查在之前 FindByID 之后可判断 comment.user_id vs current uid
|
||||
// 为简化,暂时信任前端权限,后续在 service 可增加
|
||||
|
||||
if err := ctrl.commentService.Delete(uint(commentID)); err != nil {
|
||||
// 权限检查由 service 层统一处理
|
||||
isAdmin := model.HasMinRole(role, model.RoleAdmin)
|
||||
if err := ctrl.commentService.Delete(uint(commentID), uid, isAdmin); err != nil {
|
||||
if errors.Is(err, common.ErrPermissionDenied) {
|
||||
common.Error(c, http.StatusForbidden, err.Error())
|
||||
return
|
||||
}
|
||||
common.Error(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user