12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package controller
- import (
- "github.com/gin-gonic/gin"
- "net/http"
- "x-ui/logger"
- "x-ui/web/service"
- "x-ui/web/session"
- )
- type LoginForm struct {
- Username string `json:"username" form:"username"`
- Password string `json:"password" form:"password"`
- }
- type IndexController struct {
- BaseController
- userService service.UserService
- }
- func NewIndexController(g *gin.RouterGroup) *IndexController {
- a := &IndexController{}
- a.initRouter(g)
- return a
- }
- func (a *IndexController) initRouter(g *gin.RouterGroup) {
- g.GET("/", a.index)
- g.POST("/login", a.login)
- g.GET("/logout", a.logout)
- }
- func (a *IndexController) index(c *gin.Context) {
- if session.IsLogin(c) {
- c.Redirect(http.StatusTemporaryRedirect, "xui/")
- return
- }
- html(c, "login.html", "登录", nil)
- }
- func (a *IndexController) login(c *gin.Context) {
- var form LoginForm
- err := c.ShouldBind(&form)
- if err != nil {
- pureJsonMsg(c, false, "数据格式错误")
- return
- }
- if form.Username == "" {
- pureJsonMsg(c, false, "请输入用户名")
- return
- }
- if form.Password == "" {
- pureJsonMsg(c, false, "请输入密码")
- return
- }
- user := a.userService.CheckUser(form.Username, form.Password)
- if user == nil {
- logger.Infof("wrong username or password: \"%s\" \"%s\"", form.Username, form.Password)
- pureJsonMsg(c, false, "用户名或密码错误")
- return
- }
- err = session.SetLoginUser(c, user)
- logger.Info("user", user.Id, "login success")
- jsonMsg(c, "登录", err)
- }
- func (a *IndexController) logout(c *gin.Context) {
- user := session.GetLoginUser(c)
- if user != nil {
- logger.Info("user", user.Id, "logout")
- }
- session.ClearSession(c)
- c.Redirect(http.StatusTemporaryRedirect, c.GetString("base_path"))
- }
|