- 修复 Service 层所有 FindByID 错误均返回 ErrUserNotFound 的严重 bug,新增 findPost/findPostWithAuthor 正确区分 gorm.ErrRecordNotFound 和数据库错误 - 新增帖子相关错误哨兵:ErrPostNotFound/ErrPostCannotEdit/ErrPostCannotSubmit/ErrPostCannotApprove/ErrPostCannotReject/ErrPostCannotUnlock - 修复 ShowAPI 缺少权限控制,非 approved 帖子可被任意用户通过 API 获取 - 修复 EditPage 缺少权限检查,非作者可访问编辑页面 - 修复 Update/Delete API 中 uid 断言未做 ok 检查 - Controller 层区分业务错误和内部错误,避免透传 Service 层错误信息给客户端 - 将 postStore 接口从 post_service.go 移至 repository.go,与其他仓储接口保持一致 - 移除 new.html 中孤立的 </template> 标签
47 lines
2.4 KiB
Go
47 lines
2.4 KiB
Go
package common
|
||
|
||
import "errors"
|
||
|
||
// 认证相关错误哨兵(统一存放,避免 service 和 middleware 交叉引用)
|
||
var (
|
||
ErrEmailExists = errors.New("该邮箱已注册")
|
||
ErrUsernameTaken = errors.New("该用户名已被占用")
|
||
ErrUsernameInvalid = errors.New("用户名格式无效(支持中英文、数字、下划线、连字符,1-16个字符)")
|
||
ErrBioTooLong = errors.New("个性签名不能超过 128 个字符")
|
||
ErrInvalidCred = errors.New("邮箱或密码错误")
|
||
ErrUserNotFound = errors.New("用户不存在")
|
||
ErrUserBanned = errors.New("该账号已被封禁")
|
||
ErrUserDeleted = errors.New("该账号已申请注销,登录即自动恢复")
|
||
// 统一返回,避免泄露用户存在性、软删除状态等内部信息
|
||
ErrUserLocked = errors.New("邮箱或密码错误")
|
||
ErrWeakPassword = errors.New("密码需至少 8 位,且包含字母和数字")
|
||
ErrTokenExpired = errors.New("登录已过期,请重新登录")
|
||
ErrTokenInvalid = errors.New("无效的认证凭据")
|
||
ErrTokenRevoked = errors.New("登录凭证已失效,请重新登录")
|
||
ErrRateLimitAccount = errors.New("该账号登录尝试过于频繁")
|
||
ErrRateLimitIP = errors.New("请求过于频繁,请稍后重试")
|
||
ErrRateLimitRegisterIP = errors.New("注册请求过于频繁,请稍后重试")
|
||
ErrPermissionDenied = errors.New("权限不足")
|
||
|
||
// 审核相关
|
||
ErrAuditNotFound = errors.New("审核记录不存在")
|
||
ErrAuditNotPending = errors.New("该审核记录已处理")
|
||
ErrAuditDisabled = errors.New("审核功能未开启")
|
||
ErrAuditTypeOff = errors.New("该类型审核未开启")
|
||
|
||
// 密码 & 注销相关
|
||
ErrIncorrectPassword = errors.New("当前密码错误")
|
||
ErrLoginBeforeDelete = errors.New("请先登录再注销")
|
||
ErrNeedsConfirmRestore = errors.New("需要二次确认恢复账号")
|
||
ErrOwnerCannotDelete = errors.New("站长不可自主注销,请先转让站长权限")
|
||
ErrRegistrationDisabled = errors.New("注册功能已关闭")
|
||
|
||
// 帖子相关
|
||
ErrPostNotFound = errors.New("帖子不存在")
|
||
ErrPostCannotEdit = errors.New("当前状态不允许编辑")
|
||
ErrPostCannotSubmit = errors.New("仅草稿和已退回帖子可提交审核")
|
||
ErrPostCannotApprove = errors.New("仅待审核帖子可通过")
|
||
ErrPostCannotReject = errors.New("仅待审核和已发布帖子可退回")
|
||
ErrPostCannotUnlock = errors.New("仅锁定状态可解锁")
|
||
)
|