| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package requests
- import (
- "github.com/gin-gonic/gin"
- "github.com/thedevsaddam/govalidator"
- "github.com/runningwater/gohub/pkg/captcha"
- )
- type VerifyCodeRequest struct {
- Phone string `json:"phone,omitempty" valid:"phone"`
- CaptchaID string `json:"captcha_id,omitempty" valid:"captcha_id"`
- CaptchaAnswer string `json:"captcha_answer,omitempty" valid:"captcha_answer"`
- }
- func VerifyCodePhone(data any, c *gin.Context) map[string][]string {
- // 1. 定制认证规则
- rules := govalidator.MapData{
- "phone": []string{"required", "digits:11"},
- "captcha_id": []string{"required"},
- "captcha_answer": []string{"required", "digits:6"},
- }
- // 2. 定制错误信息
- messages := govalidator.MapData{
- "phone": []string{
- "required:手机号不能为空",
- "digits:手机号格式不正确,长度必须为11位",
- },
- "captcha_id": []string{
- "required:验证码ID不能为空",
- },
- "captcha_answer": []string{
- "required:验证码不能为空",
- "digits:验证码格式不正确,长度必须为6位",
- },
- }
- errs := validate(data, rules, messages)
- // Captcha 图片验证
- _data := data.(*VerifyCodeRequest)
- if ok := captcha.NewCaptcha().VerifyCaptcha(_data.CaptchaID, _data.CaptchaAnswer); !ok {
- errs["captcha_answer"] = append(errs["captcha_answer"], "验证码错误")
- }
- // 3. 返回错误信息
- return errs
- }
- type VerifyCodeEmailRequest struct {
- Email string `json:"email,omitempty" valid:"email"`
- CaptchaID string `json:"captcha_id,omitempty" valid:"captcha_id"`
- CaptchaAnswer string `json:"captcha_answer,omitempty" valid:"captcha_answer"`
- }
- func VerifyCodeEmail(data any, c *gin.Context) map[string][]string {
- // 1. 定制认证规则
- rules := govalidator.MapData{
- "email": []string{"required", "min:4", "max:30", "email"},
- "captcha_id": []string{"required"},
- "captcha_answer": []string{"required", "digits:6"},
- }
- // 2. 定制错误信息
- messages := govalidator.MapData{
- "email": []string{
- "required:邮箱不能为空",
- "min:邮箱长度需大于 4",
- "max:邮箱长度需小于 30",
- "email:邮箱格式不正确",
- },
- "captcha_id": []string{
- "required:验证码ID不能为空",
- },
- "captcha_answer": []string{
- "required:验证码不能为空",
- "digits:验证码格式不正确,长度必须为6位",
- },
- }
- errs := validate(data, rules, messages)
- // Captcha 图片验证
- _data := data.(*VerifyCodeEmailRequest)
- if ok := captcha.NewCaptcha().VerifyCaptcha(_data.CaptchaID, _data.CaptchaAnswer); !ok {
- errs["captcha_answer"] = append(errs["captcha_answer"], "验证码错误")
- }
- // 3. 返回错误信息
- return errs
- }
|