|
|
@@ -2,109 +2,165 @@
|
|
|
package requests
|
|
|
|
|
|
import (
|
|
|
- "github.com/gin-gonic/gin"
|
|
|
- "github.com/thedevsaddam/govalidator"
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+ "github.com/thedevsaddam/govalidator"
|
|
|
|
|
|
- "github.com/runningwater/gohub/app/requests/validators"
|
|
|
+ "github.com/runningwater/gohub/app/requests/validators"
|
|
|
)
|
|
|
|
|
|
type SignupPhoneExistRequest struct {
|
|
|
- Phone string `json:"phone,omitempty" valid:"phone"`
|
|
|
+ Phone string `json:"phone,omitempty" valid:"phone"`
|
|
|
}
|
|
|
type SignupEmailExistRequest struct {
|
|
|
- Email string `json:"email,omitempty" valid:"email"`
|
|
|
+ Email string `json:"email,omitempty" valid:"email"`
|
|
|
}
|
|
|
|
|
|
func ValidateSignupPhoneExist(data any, c *gin.Context) map[string][]string {
|
|
|
|
|
|
- // 自定义验证规则
|
|
|
- rules := govalidator.MapData{
|
|
|
- "phone": []string{"required", "digits:11"},
|
|
|
- }
|
|
|
-
|
|
|
- // 自定义错误信息
|
|
|
- messages := govalidator.MapData{
|
|
|
- "phone": []string{
|
|
|
- "required:手机号不能为空",
|
|
|
- "digits:手机号必须是11位数字",
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- // 执行验证
|
|
|
- return validate(data, rules, messages)
|
|
|
+ // 自定义验证规则
|
|
|
+ rules := govalidator.MapData{
|
|
|
+ "phone": []string{"required", "digits:11"},
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义错误信息
|
|
|
+ messages := govalidator.MapData{
|
|
|
+ "phone": []string{
|
|
|
+ "required:手机号不能为空",
|
|
|
+ "digits:手机号必须是11位数字",
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // 执行验证
|
|
|
+ return validate(data, rules, messages)
|
|
|
}
|
|
|
|
|
|
func ValidateSignupEmailExist(data any, c *gin.Context) map[string][]string {
|
|
|
|
|
|
- // 自定义验证规则
|
|
|
- rules := govalidator.MapData{
|
|
|
- "email": []string{"required", "min:4", "max:30", "email"},
|
|
|
- }
|
|
|
-
|
|
|
- // 自定义错误信息
|
|
|
- messages := govalidator.MapData{
|
|
|
- "email": []string{
|
|
|
- "required:Email 不能为空",
|
|
|
- "min:Email 长度需大于 4",
|
|
|
- "max:Email 长度需小于 30",
|
|
|
- "email:Email 格式不正确,请提供有效的邮箱地址",
|
|
|
- },
|
|
|
- }
|
|
|
- // 执行验证
|
|
|
- return validate(data, rules, messages)
|
|
|
+ // 自定义验证规则
|
|
|
+ rules := govalidator.MapData{
|
|
|
+ "email": []string{"required", "min:4", "max:30", "email"},
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义错误信息
|
|
|
+ messages := govalidator.MapData{
|
|
|
+ "email": []string{
|
|
|
+ "required:Email 不能为空",
|
|
|
+ "min:Email 长度需大于 4",
|
|
|
+ "max:Email 长度需小于 30",
|
|
|
+ "email:Email 格式不正确,请提供有效的邮箱地址",
|
|
|
+ },
|
|
|
+ }
|
|
|
+ // 执行验证
|
|
|
+ return validate(data, rules, messages)
|
|
|
}
|
|
|
|
|
|
// SignupUsingPhoneRequest 用于手机注册的请求结构体
|
|
|
// 该结构体包含了手机号码、验证码、姓名、密码和确认密码等字段
|
|
|
type SignupUsingPhoneRequest struct {
|
|
|
- Phone string `json:"phone,omitempty" valid:"phone"`
|
|
|
- VerifyCode string `json:"verify_code,omitempty" valid:"verify_code"`
|
|
|
- Name string `valid:"name" json:"name,omitempty"`
|
|
|
- Password string `valid:"password" json:"password,omitempty"`
|
|
|
- PasswordConfirm string `valid:"password_confirm" json:"password_confirm,omitempty"`
|
|
|
+ Phone string `json:"phone,omitempty" valid:"phone"`
|
|
|
+ VerifyCode string `json:"verify_code,omitempty" valid:"verify_code"`
|
|
|
+ Name string `valid:"name" json:"name,omitempty"`
|
|
|
+ Password string `valid:"password" json:"password,omitempty"`
|
|
|
+ PasswordConfirm string `valid:"password_confirm" json:"password_confirm,omitempty"`
|
|
|
}
|
|
|
|
|
|
// SignupUsingPhone 验证手机号码注册表单
|
|
|
func SignupUsingPhone(data any, c *gin.Context) map[string][]string {
|
|
|
- // 自定义验证规则
|
|
|
- rules := govalidator.MapData{
|
|
|
- "phone": []string{"required", "digits:11", "not_exists:users,phone"},
|
|
|
- "verify_code": []string{"required", "digits:6"},
|
|
|
- "name": []string{"required", "alpha_num", "between:3,20", "not_exists:users,name"},
|
|
|
- "password": []string{"required", "min:6"},
|
|
|
- "password_confirm": []string{"required"},
|
|
|
- }
|
|
|
-
|
|
|
- // 自定义错误信息
|
|
|
- messages := govalidator.MapData{
|
|
|
- "phone": []string{
|
|
|
- "required:手机号不能为空",
|
|
|
- "digits:手机号必须是 11 位数字",
|
|
|
- },
|
|
|
- "verify_code": []string{
|
|
|
- "required:验证码不能为空",
|
|
|
- "digits:验证码必须是 6 位数字",
|
|
|
- },
|
|
|
- "name": []string{
|
|
|
- "required:姓名不能为空",
|
|
|
- "alpha_num:姓名格式错误,只允许数字和英文",
|
|
|
- "between:姓名长度需在 3~20 之间",
|
|
|
- },
|
|
|
- "password": []string{
|
|
|
- "required:密码不能为空",
|
|
|
- "min:密码长度需大于 6",
|
|
|
- },
|
|
|
- "password_confirm": []string{
|
|
|
- "required:确认密码框不能为空",
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
- errs := validate(data, rules, messages)
|
|
|
-
|
|
|
- // 检查密码和确认密码是否匹配
|
|
|
- _data := data.(*SignupUsingPhoneRequest)
|
|
|
- errs = validators.ValidatePasswordConfirm(_data.Password, _data.PasswordConfirm, errs)
|
|
|
- errs = validators.ValidateVerifyCode(_data.Phone, _data.VerifyCode, errs)
|
|
|
-
|
|
|
- return errs
|
|
|
+ // 自定义验证规则
|
|
|
+ rules := govalidator.MapData{
|
|
|
+ "phone": []string{"required", "digits:11", "not_exists:users,phone"},
|
|
|
+ "verify_code": []string{"required", "digits:6"},
|
|
|
+ "name": []string{"required", "alpha_num", "between:3,20", "not_exists:users,name"},
|
|
|
+ "password": []string{"required", "min:6"},
|
|
|
+ "password_confirm": []string{"required"},
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自定义错误信息
|
|
|
+ messages := govalidator.MapData{
|
|
|
+ "phone": []string{
|
|
|
+ "required:手机号不能为空",
|
|
|
+ "digits:手机号必须是 11 位数字",
|
|
|
+ },
|
|
|
+ "verify_code": []string{
|
|
|
+ "required:验证码不能为空",
|
|
|
+ "digits:验证码必须是 6 位数字",
|
|
|
+ },
|
|
|
+ "name": []string{
|
|
|
+ "required:姓名不能为空",
|
|
|
+ "alpha_num:姓名格式错误,只允许数字和英文",
|
|
|
+ "between:姓名长度需在 3~20 之间",
|
|
|
+ },
|
|
|
+ "password": []string{
|
|
|
+ "required:密码不能为空",
|
|
|
+ "min:密码长度需大于 6",
|
|
|
+ },
|
|
|
+ "password_confirm": []string{
|
|
|
+ "required:确认密码框不能为空",
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ errs := validate(data, rules, messages)
|
|
|
+
|
|
|
+ // 检查密码和确认密码是否匹配
|
|
|
+ _data := data.(*SignupUsingPhoneRequest)
|
|
|
+ errs = validators.ValidatePasswordConfirm(_data.Password, _data.PasswordConfirm, errs)
|
|
|
+ errs = validators.ValidateVerifyCode(_data.Phone, _data.VerifyCode, errs)
|
|
|
+
|
|
|
+ return errs
|
|
|
+}
|
|
|
+
|
|
|
+// SignupUsingEmailRequest 用于邮箱注册的请求结构体
|
|
|
+// !该结构体包含了邮箱、验证码、姓名、密码和确认密码等字段
|
|
|
+type SignupUsingEmailRequest struct {
|
|
|
+ Email string `json:"email,omitempty" valid:"email"`
|
|
|
+ VerifyCode string `json:"verify_code,omitempty" valid:"verify_code"`
|
|
|
+ Name string `valid:"name" json:"name"`
|
|
|
+ Password string `valid:"password" json:"password,omitempty"`
|
|
|
+ PasswordConfirm string `valid:"password_confirm" json:"password_confirm,omitempty"`
|
|
|
+}
|
|
|
+
|
|
|
+// SignupUsingEmail 验证邮箱注册表单
|
|
|
+func SignupUsingEmail(data any, c *gin.Context) map[string][]string {
|
|
|
+
|
|
|
+ rules := govalidator.MapData{
|
|
|
+ "email": []string{"required", "min:4", "max:30", "email", "not_exists:users,email"}, // 邮箱验证规则
|
|
|
+ "verify_code": []string{"required", "digits:6"}, // 验证码验证规则
|
|
|
+ "name": []string{"required", "alpha_num", "between:3,20", "not_exists:users,name"}, // 姓名验证规则
|
|
|
+ "password": []string{"required", "min:6"}, // 密码验证规则
|
|
|
+ "password_confirm": []string{"required"}, // 确认密码验证规则
|
|
|
+ }
|
|
|
+ // 自定义错误信息
|
|
|
+ messages := govalidator.MapData{
|
|
|
+ "email": []string{
|
|
|
+ "required:Email 不能为空",
|
|
|
+ "min:Email 长度需大于 4",
|
|
|
+ "max:Email 长度需小于 30",
|
|
|
+ "email:Email 格式不正确,请提供有效的邮箱地址",
|
|
|
+ "not_exists:邮箱已被注册",
|
|
|
+ },
|
|
|
+ "verify_code": []string{
|
|
|
+ "required:验证码不能为空",
|
|
|
+ "digits:验证码必须是 6 位数字",
|
|
|
+ },
|
|
|
+ "name": []string{
|
|
|
+ "required:姓名不能为空",
|
|
|
+ "alpha_num:姓名格式错误,只允许数字和英文",
|
|
|
+ "between:姓名长度需在 3~20 之间",
|
|
|
+ },
|
|
|
+ "password": []string{
|
|
|
+ "required:密码不能为空",
|
|
|
+ "min:密码长度需大于 6",
|
|
|
+ },
|
|
|
+ "password_confirm": []string{
|
|
|
+ "required:确认密码框不能为空",
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ errs := validate(data, rules, messages)
|
|
|
+ // 检查密码和确认密码是否匹配
|
|
|
+ _data := data.(*SignupUsingEmailRequest)
|
|
|
+ errs = validators.ValidatePasswordConfirm(_data.Password, _data.PasswordConfirm, errs)
|
|
|
+ errs = validators.ValidateVerifyCode(_data.Email, _data.VerifyCode, errs)
|
|
|
+
|
|
|
+ return errs
|
|
|
}
|