verify_code_controller.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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/captcha"
  7. "github.com/runningwater/gohub/pkg/logger"
  8. "github.com/runningwater/gohub/pkg/response"
  9. "github.com/runningwater/gohub/pkg/verifycode"
  10. )
  11. type VerifyCodeController struct {
  12. v1.BaseApiController
  13. }
  14. // ShowCaptcha 显示图片验证码
  15. func (vc *VerifyCodeController) ShowCaptcha(c *gin.Context) {
  16. // 生成验证码
  17. id, b64s, answer, err := captcha.NewCaptcha().GenerateCaptcha()
  18. logger.LogIf(err)
  19. logger.DebugString("captchaController", "captcha id: ", id)
  20. logger.DebugString("captchaController", "captcha answer: ", answer)
  21. response.JSON(c, gin.H{
  22. "captcha_id": id,
  23. "captcha_image": b64s,
  24. })
  25. }
  26. // SendUsingPhone 发送手机验证码
  27. func (vc *VerifyCodeController) SendUsingPhone(c *gin.Context) {
  28. // 1. 验证表单
  29. request := requests.VerifyCodeRequest{}
  30. if ok := requests.Validate(c, &request, requests.VerifyCodePhone); !ok {
  31. return
  32. }
  33. // 2. 发送手机验证码
  34. if ok := verifycode.NewVerifyCode().SendSMS(request.Phone); !ok {
  35. response.Abort500(c, "发送短信失败~~")
  36. } else {
  37. response.Success(c)
  38. }
  39. response.Success(c)
  40. }
  41. // SendUsingEmail 发送邮箱验证码
  42. func (vc *VerifyCodeController) SendUsingEmail(c *gin.Context) {
  43. // 1. 验证表单
  44. request := requests.VerifyCodeEmailRequest{}
  45. if ok := requests.Validate(c, &request, requests.VerifyCodeEmail); !ok {
  46. return
  47. }
  48. // 2. 发送邮箱验证码
  49. if err := verifycode.NewVerifyCode().SendEmail(request.Email); err != nil {
  50. response.Abort500(c, "发送邮件失败~~")
  51. } else {
  52. response.Success(c)
  53. }
  54. }