login.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package admin
  2. import (
  3. "cc-officialweb/models"
  4. "cc-officialweb/service"
  5. "encoding/json"
  6. "github.com/beego/beego/v2/adapter/validation"
  7. beego "github.com/beego/beego/v2/server/web"
  8. "github.com/go-playground/validator/v10"
  9. )
  10. type LoginController struct {
  11. beego.Controller
  12. }
  13. type JSON struct {
  14. Code int
  15. Msg string
  16. Data any
  17. }
  18. type JSONS struct {
  19. Total int
  20. Data any
  21. }
  22. func (l *LoginController) Get() {
  23. l.TplName = "admin/login.html"
  24. }
  25. func (l *LoginController) Post() {
  26. var user models.User
  27. // 获取POST参数
  28. username := l.GetString("username")
  29. password := l.GetString("password")
  30. // 进行验证和登录检查
  31. valid := validation.Validation{}
  32. valid.Required(username, "username").Message("用户名不能为空")
  33. valid.Required(password, "password").Message("密码不能为空")
  34. user.Username = username
  35. user.Password = password
  36. if valid.HasErrors() {
  37. for _, err := range valid.Errors {
  38. l.Data["error"] = err.Message
  39. break
  40. }
  41. } else {
  42. token := service.Login(user)
  43. if token != "" {
  44. l.Ctx.SetCookie("token", token, 3600*24*7, "/", "", false, true)
  45. l.Redirect("/admin/index", 302)
  46. } else {
  47. l.Data["error"] = "用户名或密码错误"
  48. }
  49. }
  50. l.TplName = "admin/login.html"
  51. }
  52. // Login 登录接口
  53. func (l *LoginController) Login() {
  54. var user models.User
  55. // 获取POST参数
  56. err := json.Unmarshal(l.Ctx.Input.RequestBody, &user)
  57. if err != nil {
  58. l.Data["json"] = &JSON{Code: 103, Msg: "json格式错误"}
  59. l.ServeJSON()
  60. return
  61. }
  62. // 进行验证和登录检查
  63. validate := validator.New()
  64. unva := validate.Var(user.Username, "required")
  65. pwdva := validate.Var(user.Password, "required")
  66. if unva != nil || pwdva != nil {
  67. l.Data["json"] = &JSON{Code: 103, Msg: "用户名密码不能为空"}
  68. l.ServeJSON()
  69. return
  70. } else {
  71. token := service.Login(user)
  72. if token != "" {
  73. l.Data["json"] = &JSON{Code: 200, Msg: "登录成功", Data: token}
  74. l.ServeJSON()
  75. } else {
  76. l.Data["json"] = &JSON{Code: 103, Msg: "用户名密码错误"}
  77. l.ServeJSON()
  78. return
  79. }
  80. }
  81. }