login_controller.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package auth
  2. import (
  3. "github.com/gin-gonic/gin"
  4. v1 "github.com/runningwater/gohub/app/http/controllers/api/v1"
  5. "github.com/runningwater/gohub/app/requests"
  6. "github.com/runningwater/gohub/pkg/auth"
  7. "github.com/runningwater/gohub/pkg/jwt"
  8. "github.com/runningwater/gohub/pkg/response"
  9. )
  10. type LoginController struct {
  11. v1.BaseApiController
  12. }
  13. // LoginByPhone 手机号登录
  14. func (lc *LoginController) LoginByPhone(c *gin.Context) {
  15. // 1. 验证表单
  16. request := requests.LoginByPhoneRequest{}
  17. if ok := requests.Validate(c, &request, requests.LoginByPhone); !ok {
  18. return
  19. }
  20. // 2. 尝试登录
  21. user, err := auth.LoginByPhone(request.Phone)
  22. if err != nil {
  23. // 失败,显示错误提示
  24. response.Error(c, err, "账号不存在或密码错误")
  25. return
  26. }
  27. // 登录成功
  28. token := jwt.NewJWT().IssueToken(user.GetStringID(), user.Name)
  29. response.JSON(c, gin.H{
  30. "token": token,
  31. })
  32. }
  33. // LoginByPassword 用户名 + 密码登录
  34. func (lc *LoginController) LoginByPassword(c *gin.Context) {
  35. // 1. 验证表单
  36. request := requests.LoginByPasswordRequest{}
  37. if ok := requests.Validate(c, &request, requests.LoginByPassword); !ok {
  38. return
  39. }
  40. // 2. 尝试登录
  41. user, err := auth.Attemp(request.LoginID, request.Password)
  42. if err != nil {
  43. // 失败,显示错误提示
  44. response.Unauthorized(c, "账号不存在或密码错误")
  45. return
  46. }
  47. // 登录成功
  48. token := jwt.NewJWT().IssueToken(user.GetStringID(), user.Name)
  49. response.JSON(c, gin.H{
  50. "token": token,
  51. })
  52. }