package super import ( "quyun/v2/app/errorx" "quyun/v2/app/http/super/dto" "quyun/v2/app/services" "quyun/v2/providers/app" "quyun/v2/providers/jwt" "github.com/gofiber/fiber/v3" ) // @provider type authController struct { app *app.Config jwt *jwt.JWT } // @Router /super/v1/auth/login [post] // @Bind form body func (ctl *authController) login(ctx fiber.Ctx, form *dto.LoginForm) (*dto.LoginResponse, error) { m, err := services.User.FindByUsername(ctx, form.Username) if err != nil { return nil, errorx.Wrap(err).WithMsg("用户名或密码错误") } if ok := m.ComparePassword(ctx, form.Password); !ok { return nil, errorx.Wrap(err).WithMsg("用户名或密码错误") } token, err := ctl.jwt.CreateToken(ctl.jwt.CreateClaims(jwt.BaseClaims{ UserID: m.ID, })) if err != nil { return nil, errorx.Wrap(err).WithMsg("登录凭证生成失败") } return &dto.LoginResponse{Token: token}, nil }