auth.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package controller
  2. import (
  3. "fmt"
  4. "github.com/gin-gonic/gin"
  5. "github.com/go-playground/validator/v10"
  6. "hongze/hongze_yb_en_api/controller/resp"
  7. "hongze/hongze_yb_en_api/global"
  8. "hongze/hongze_yb_en_api/models"
  9. "hongze/hongze_yb_en_api/models/english_report_email"
  10. "hongze/hongze_yb_en_api/services"
  11. "hongze/hongze_yb_en_api/utils"
  12. "time"
  13. )
  14. type AuthController struct {
  15. }
  16. func (a *AuthController) Login(c *gin.Context) {
  17. req := new(models.LoginReq)
  18. err := c.BindQuery(&req)
  19. if err != nil {
  20. errs, ok := err.(validator.ValidationErrors)
  21. if !ok {
  22. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  23. return
  24. }
  25. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  26. return
  27. }
  28. sysUser, err := english_report_email.CheckUser(req.Type, req.Account, req.Password)
  29. if err != nil {
  30. resp.FailData("登录失败,账号或密码错误", "Err:"+err.Error(), c)
  31. return
  32. }
  33. if sysUser == nil {
  34. resp.FailData("登录失败,账号或密码错误", "Err:"+err.Error(), c)
  35. return
  36. }
  37. if sysUser.Enable == 0 {
  38. resp.FailData("您的账号已被禁用,如需登录,请联系管理员", "Err:"+err.Error(), c)
  39. return
  40. }
  41. account := utils.MD5(req.Account)
  42. token, err := utils.GenToken(account)
  43. sysSession := new(models.EnglishYbSession)
  44. sysSession.UserId = int(sysUser.AdminId)
  45. //现在要求永不过期
  46. sysSession.ExpiredTime = time.Now().AddDate(99, 0, 0)
  47. sysSession.CreatedTime = time.Now()
  48. sysSession.LastUpdatedTime = time.Now()
  49. sysSession.AccessToken = token
  50. err = sysSession.AddSession()
  51. fmt.Println("id:", sysSession.SessionId)
  52. if err != nil {
  53. resp.FailData("新增session信息失败", "Err:"+err.Error(), c)
  54. return
  55. }
  56. }
  57. func (a *AuthController) Register(c *gin.Context) {
  58. req := new(models.LoginReq)
  59. err := c.BindQuery(&req)
  60. if err != nil {
  61. errs, ok := err.(validator.ValidationErrors)
  62. if !ok {
  63. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  64. return
  65. }
  66. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  67. return
  68. }
  69. }
  70. // @Title 修改密码
  71. // @Description 修改密码
  72. // @Param request body models.ModifyPwdReq true "type json string"
  73. // @Success 200 {object} models.LoginResp
  74. // @router /modifyPwd [post]
  75. func (a *AuthController) ModifyPwd(c *gin.Context) {
  76. req := new(models.ModifyPwdReq)
  77. err := c.BindQuery(&req)
  78. if err != nil {
  79. errs, ok := err.(validator.ValidationErrors)
  80. if !ok {
  81. resp.FailData("参数解析失败", "Err:"+err.Error(), c)
  82. return
  83. }
  84. resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
  85. return
  86. }
  87. }
  88. // GetSmsCode 获取短信验证码接口
  89. // @Tags 用户模块
  90. // @Summary 获取短信验证码
  91. // @Description 获取短信验证码接口
  92. // @Security ApiKeyAuth
  93. // @securityDefinitions.basic BasicAuth
  94. // @Param mobile query string true "手机号"
  95. // @Param area_num query string true "手机国际区号(中国大陆:86)"
  96. // @Accept json
  97. // @Product json
  98. // @Success 200 {string} string 获取验证码成功
  99. // @Failure 400 {string} string 手机号不能为空,请输入手机号
  100. // @Router /get_sms_code [get]
  101. func (a *AuthController) GetSmsCode(c *gin.Context) {
  102. mobile := c.DefaultQuery("mobile", "")
  103. areaNum := c.DefaultQuery("area_num", "")
  104. err, errMsg := services.SendSmsCode(mobile, areaNum)
  105. if err != nil {
  106. if errMsg != "" {
  107. errMsg = "获取验证码失败"
  108. }
  109. resp.Fail(errMsg, c)
  110. return
  111. }
  112. resp.Ok("获取验证码成功", c)
  113. }
  114. // GetEmailCode 获取邮箱验证码接口
  115. // @Tags 用户模块
  116. // @Summary 获取邮箱验证码
  117. // @Description 获取邮箱验证码
  118. // @Security ApiKeyAuth
  119. // @securityDefinitions.basic BasicAuth
  120. // @Param email query string true "电子邮箱账号"
  121. // @Accept json
  122. // @Product json
  123. // @Success 200 {string} string 获取验证码成功
  124. // @Failure 400 {string} string 请输入邮箱地址
  125. // @Router /get_email_code [get]
  126. func (a *AuthController) GetEmailCode(c *gin.Context) {
  127. email := c.DefaultQuery("email", "")
  128. if email == "" {
  129. resp.Fail("请输入邮箱地址", c)
  130. return
  131. }
  132. if !utils.ValidateEmailFormatat(email) {
  133. resp.Fail("邮箱格式错误,请重新输入", c)
  134. return
  135. }
  136. err, errMsg := services.SendEmailCode(email)
  137. if err != nil {
  138. if errMsg != "" {
  139. errMsg = "获取验证码失败"
  140. }
  141. resp.Fail(errMsg, c)
  142. return
  143. }
  144. resp.Ok("获取验证码成功", c)
  145. }