package auth import ( "log" "management/internal/erpserver/model/system/request" v1 "management/internal/erpserver/service/v1" authv1 "management/internal/erpserver/service/v1/auth" "management/internal/pkg/gin/gu" "management/internal/pkg/mid" "github.com/gin-gonic/gin" "github.com/zhang2092/browser" ) type app struct { captchaService v1.CaptchaService userService v1.UserService authService *authv1.Auth } func newApp( captchaService v1.CaptchaService, userService v1.UserService, authService *authv1.Auth, ) *app { return &app{ captchaService: captchaService, userService: userService, authService: authService, } } func (a *app) login(c *gin.Context) { var req request.Login if err := c.ShouldBindJSON(&req); err != nil { log.Println("captchaID: ", req.CaptchaID) 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 && br != 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) } type Menu struct { ID int `json:"id"` Name string `json:"name"` Url string `json:"url"` Icon string `json:"icon"` Child []Menu `json:"child"` } type User struct { Name string `json:"name"` Avatar string `json:"avatar"` RoleID int32 `json:"role_id"` } type UserInfo struct { User User `json:"user"` Menus []Menu `json:"menus"` } func (a *app) getInfo(c *gin.Context) { auth := mid.GetUser(c) if auth == nil { gu.Failed(c, "用户未登录") return } user, err := a.userService.GetByUuid(c, auth.ID) if err != nil { gu.Failed(c, err.Error()) return } menus := []Menu{ { ID: 1, Name: "控制台", Icon: "house", Url: "", Child: []Menu{ { ID: 21, Name: "后台首页", Icon: "aim", Url: "/", }, }, }, { ID: 1, Name: "系统管理", Icon: "setting", Url: "", Child: []Menu{ { ID: 11, Name: "菜单管理", Icon: "menu", Url: "/system/menu", }, { ID: 12, Name: "角色管理", Icon: "star", Url: "/system/role", }, { ID: 12, Name: "部门管理", Icon: "clock", Url: "/system/department", }, { ID: 13, Name: "用户管理", Icon: "user", Url: "/system/user", }, { ID: 14, Name: "登录日志", Icon: "lock", Url: "/loginlog/list", }, { ID: 15, Name: "操作日志", Icon: "lock", Url: "/audit/list", }, }, }, } gu.Ok(c, UserInfo{ User: User{ Name: user.Username, Avatar: user.Avatar, RoleID: user.RoleID, }, Menus: menus, }) } func (a *app) logout(c *gin.Context) { gu.Ok(c, nil) }