From b493201a173187ac0da9e0e456a97d7bfcfd89b2 Mon Sep 17 00:00:00 2001 From: ata <17314593+asdxzaaaaa@user.noreply.gitee.com> Date: Fri, 10 Jul 2026 10:06:31 +0000 Subject: [PATCH] Add internal/handler/auth.go --- internal/handler/auth.go | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 internal/handler/auth.go diff --git a/internal/handler/auth.go b/internal/handler/auth.go new file mode 100644 index 0000000..061e03c --- /dev/null +++ b/internal/handler/auth.go @@ -0,0 +1,45 @@ +package handler + +import ( + "gotest/internal/service" + + "github.com/gin-gonic/gin" +) + +// AuthHandler 认证处理器 +type AuthHandler struct { + authService *service.AuthService +} + +// NewAuthHandler 创建认证处理器 +func NewAuthHandler(authService *service.AuthService) *AuthHandler { + return &AuthHandler{authService: authService} +} + +// Login 登录接口 POST /api/v1/auth/login +func (h *AuthHandler) Login(c *gin.Context) { + var req struct { + Username string `json:"username" binding:"required"` + Password string `json:"password" binding:"required"` + } + if err := c.ShouldBindJSON(&req); err != nil { + FailBadRequest(c, "用户名和密码不能为空") + return + } + + token, user, err := h.authService.Login(req.Username, req.Password) + if err != nil { + FailUnauthorized(c, err.Error()) + return + } + + Success(c, gin.H{ + "token": token, + "user": gin.H{ + "id": user.ID, + "username": user.Username, + "role": user.Role, + "avatar": user.Avatar, + }, + }) +}