后台登陆验证码

This commit is contained in:
yml
2026-05-22 17:20:47 +08:00
parent 6edee641fb
commit 7df557d668
12 changed files with 218 additions and 20 deletions
+13 -2
View File
@@ -19,13 +19,22 @@ func NewHandler(service *Service) *Handler {
return &Handler{service: service}
}
func (h *Handler) Captcha(c *gin.Context) {
item, err := h.service.Captcha()
if err != nil {
writeAdminAuthError(c, err)
return
}
response.OK(c, item)
}
func (h *Handler) Login(c *gin.Context) {
var req LoginRequest
if err := c.ShouldBindJSON(&req); err != nil {
response.BadRequest(c, "用户名和密码不能为空")
response.BadRequest(c, "用户名、密码和验证码不能为空")
return
}
result, err := h.service.Login(strings.TrimSpace(req.Username), req.Password)
result, err := h.service.Login(strings.TrimSpace(req.Username), req.Password, strings.TrimSpace(req.CaptchaID), strings.TrimSpace(req.CaptchaCode))
if err != nil {
writeAdminAuthError(c, err)
return
@@ -62,6 +71,8 @@ func writeAdminAuthError(c *gin.Context, err error) {
response.ServiceUnavailable(c, "数据库未连接")
case errors.Is(err, ErrInvalidCredential):
response.BadRequest(c, "用户名或密码错误")
case errors.Is(err, ErrCaptchaInvalid):
response.BadRequest(c, "验证码错误或已过期")
case errors.Is(err, ErrAdminDisabled):
response.Error(c, http.StatusForbidden, "admin_disabled", "管理员已禁用")
default: