| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package requests
- import (
- "github.com/gin-gonic/gin"
- "github.com/runningwater/gohub/app/requests/validators"
- "github.com/thedevsaddam/govalidator"
- )
- type LoginByPhoneRequest struct {
- Phone string `json:"phone,omitempty" valid:"phone"`
- VerifyCode string `json:"verify_code,omitempty" valid:"verify_code"`
- }
- // LoginByPhone 验证表单,返回长度等于零即通过
- func LoginByPhone(data any, c *gin.Context) map[string][]string {
- // 1. 定制认证规则
- rules := govalidator.MapData{
- "phone": []string{"required", "digits:11"},
- "verify_code": []string{"required", "digits:6"},
- }
- // 2. 定制错误消息
- messages := govalidator.MapData{
- "phone": []string{
- "required:手机号为必填项,参数名称 phone",
- "digits:手机号长度必须为 11 位的数字",
- },
- "verify_code": []string{
- "required:验证码答案必填",
- "digits:验证码长度必须为 6 位的数字",
- },
- }
- errs := validate(data, rules, messages)
- // 3. ... 增加其他业务逻辑
- _data := data.(*LoginByPhoneRequest)
- errs = validators.ValidateVerifyCode(_data.Phone, _data.VerifyCode, errs)
- // 4. 返回错误消息
- return errs
- }
- type LoginByPasswordRequest struct {
- CaptchaID string `json:"captcha_id,omitempty" valid:"captcha_id"`
- CaptchaAnswer string `json:"captcha_answer,omitempty" valid:"captcha_answer"`
- LoginID string `json:"login_id" valid:"login_id"`
- Password string `json:"password,omitempty" valid:"password"`
- }
- // LoginByPassword 验证表单,返回长度等于零即通过
- func LoginByPassword(data any, c *gin.Context) map[string][]string {
- // 1. 定制认证规则
- rules := govalidator.MapData{
- "captcha_id": []string{"required"},
- "captcha_answer": []string{"required", "digits:6"},
- "login_id": []string{"required", "min:3"},
- "password": []string{"required", "min:6"},
- }
- // 2. 定制错误消息
- messages := govalidator.MapData{
- "captcha_id": []string{
- "required:图片验证码的 ID 为必填",
- },
- "captcha_answer": []string{
- "required:图片验证码答案必填",
- "digits:图片验证码长度必须为 6 位的数字",
- },
- "login_id": []string{
- "required: 登录 ID 为必填项,支持手机号、邮箱和用户名",
- "min:登录 ID 长度需大于 3",
- },
- "password": []string{
- "required:密码为必填项",
- "min:密码长度需大于 6",
- },
- }
- errs := validate(data, rules, messages)
- // 3.... 增加其他业务逻辑
- _data := data.(*LoginByPasswordRequest)
- errs = validators.ValidateVerifyCode(_data.CaptchaID, _data.CaptchaAnswer, errs)
- // 4. 返回错误消息
- return errs
- }
|