package auth import ( "management/internal/erpserver/model/system/request" v1 "management/internal/erpserver/service/v1" authv1 "management/internal/erpserver/service/v1/auth" "management/internal/pkg/gin/gu" "github.com/drhin/logger" "github.com/gin-gonic/gin" "github.com/zhang2092/browser" ) type app struct { log *logger.Logger captchaService v1.CaptchaService userService v1.UserService authService *authv1.Auth } func newApp( log *logger.Logger, captchaService v1.CaptchaService, userService v1.UserService, authService *authv1.Auth, ) *app { return &app{ log: log, captchaService: captchaService, userService: userService, authService: authService, } } func (a *app) login(c *gin.Context) { var req request.Login if err := c.ShouldBindJSON(&req); err != nil { gu.ValidatorErrors(c, err) return } if !a.captchaService.Verify(req.CaptchaID, req.Captcha, true) { gu.Failed(c, "验证码错误") return } req.Ip = c.ClientIP() req.Url = c.Request.URL.String() req.Referrer = c.Request.Referer() br, err := browser.NewBrowser(c.Request.UserAgent()) if err == nil { req.Os = br.Platform().Name() req.Browser = br.Name() } risk, err := a.authService.Authenticate(c, req) if err != nil { gu.Failed(c, err.Error()) return } gu.Ok(c, risk) } func (a *app) logout(c *gin.Context) { gu.Ok(c, nil) }