feat(user): 实现基础用户系统

- 实现用户手机验证码、密码登录功能,支持 JWT 认证
- 实现用户注册功能
- 实现jwt中获取用户信息
This commit is contained in:
2024-11-03 19:06:09 +08:00
parent cca66faed5
commit d09e7a08cf
23 changed files with 168 additions and 246 deletions

View File

@@ -2,15 +2,18 @@ package validator
// 定义自定义错误消息
var customMessages = map[string]string{
"Name.min": "姓名不能少于1个字",
"Name.required": "姓名是必填项",
"Name.name": "姓名只能包含中文",
"Mobile.required": "手机号是必填项",
"Mobile.min": "电话号码必须为有效的中国电话号码",
"Mobile.max": "电话号码必须为有效的中国电话号码",
"Mobile.mobile": "电话号码必须为有效的中国电话号码",
"IDCard.required": "身份证号是必填项",
"IDCard.idCard": "无效的身份证号码",
"Name.min": "姓名不能少于1个字",
"Name.required": "姓名是必填项",
"Name.name": "姓名只能包含中文",
"Mobile.required": "手机号是必填项",
"Mobile.min": "电话号码必须为有效的中国电话号码",
"Mobile.max": "电话号码必须为有效的中国电话号码",
"Mobile.mobile": "电话号码必须为有效的中国电话号码",
"IDCard.required": "身份证号是必填项",
"IDCard.idCard": "无效的身份证号码",
"Password.min": "密码不能少于8位数",
"Password.max": "密码不能超过32位数",
"password.password": "密码强度太弱",
}
// 获取自定义错误消息

View File

@@ -5,6 +5,7 @@ import (
"fmt"
"github.com/go-playground/validator/v10"
"regexp"
"strings"
)
var validate *validator.Validate
@@ -43,6 +44,16 @@ func init() {
if err := validate.RegisterValidation("mobileType", validMobileType); err != nil {
panic(fmt.Sprintf("注册 mobileType 验证器时发生错误: %v", err))
}
if err := validate.RegisterValidation("password", validatePassword); err != nil {
panic(fmt.Sprintf("注册 password 验证器时发生错误: %v", err))
}
}
// 弱口令列表
var weakPasswords = []string{
"12345678", "password", "123456789", "qwerty", "123456", "letmein",
"1234567", "welcome", "abc123", "password1", "1234", "111111", "admin",
}
// Validate 校验参数逻辑
@@ -127,3 +138,17 @@ func validMobileType(fl validator.FieldLevel) bool {
return validTypes[mobileType]
}
// 自定义密码强度校验函数
func validatePassword(fl validator.FieldLevel) bool {
password := fl.Field().String()
// 检查密码是否在弱口令列表中
for _, weakPwd := range weakPasswords {
if strings.ToLower(password) == weakPwd {
return false
}
}
return true
}