login.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package admin
  2. import (
  3. "Gwen/global"
  4. "Gwen/http/request/admin"
  5. "Gwen/http/response"
  6. adResp "Gwen/http/response/admin"
  7. "Gwen/service"
  8. "github.com/gin-gonic/gin"
  9. )
  10. type Login struct {
  11. }
  12. // Login 登录
  13. // @Tags 登录
  14. // @Summary 登录
  15. // @Description 登录
  16. // @Accept json
  17. // @Produce json
  18. // @Param body body admin.Login true "登录信息"
  19. // @Success 200 {object} response.Response{data=adResp.LoginPayload}
  20. // @Failure 500 {object} response.Response
  21. // @Router /admin/login [post]
  22. // @Security token
  23. func (ct *Login) Login(c *gin.Context) {
  24. f := &admin.Login{}
  25. err := c.ShouldBindJSON(f)
  26. if err != nil {
  27. response.Fail(c, 101, "参数错误")
  28. return
  29. }
  30. errList := global.Validator.ValidStruct(f)
  31. if len(errList) > 0 {
  32. response.Fail(c, 101, errList[0])
  33. return
  34. }
  35. u := service.AllService.UserService.InfoByUsernamePassword(f.Username, f.Password)
  36. if u.Id == 0 {
  37. response.Fail(c, 101, "用户名或密码错误")
  38. return
  39. }
  40. ut := service.AllService.UserService.Login(u)
  41. response.Success(c, &adResp.LoginPayload{
  42. Token: ut.Token,
  43. Username: u.Username,
  44. RouteNames: service.AllService.UserService.RouteNames(u),
  45. Nickname: u.Nickname,
  46. })
  47. }
  48. // Logout 登出
  49. // @Tags 登录
  50. // @Summary 登出
  51. // @Description 登出
  52. // @Accept json
  53. // @Produce json
  54. // @Success 200 {object} response.Response
  55. // @Failure 500 {object} response.Response
  56. // @Router /admin/logout [post]
  57. func (ct *Login) Logout(c *gin.Context) {
  58. u := service.AllService.UserService.CurUser(c)
  59. token, ok := c.Get("token")
  60. if ok {
  61. service.AllService.UserService.Logout(u, token.(string))
  62. }
  63. response.Success(c, nil)
  64. }