68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
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)
|
|
}
|