算了,后端我自己写吧
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"time"
|
||||
)
|
||||
|
||||
// 获取当前时间字符串
|
||||
// 参数格式可选,默认"2006-01-02 15:04:05"
|
||||
func GetCurrentTimeString(format ...string) string {
|
||||
// 默认格式
|
||||
layout := "2006_01_02-15_04_05.999999999"
|
||||
|
||||
// 如果传入了格式参数则使用自定义格式
|
||||
if len(format) > 0 {
|
||||
layout = format[0]
|
||||
}
|
||||
|
||||
return time.Now().Format(layout)
|
||||
}
|
||||
|
||||
func StringToTimePtr(str string) (*time.Time, error) {
|
||||
layout := "2006-01-02 15:04"
|
||||
t, err := time.Parse(layout, str)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &t, nil
|
||||
}
|
||||
|
||||
func RandStr32() string {
|
||||
// 生成 32 字节 (256 位) 随机数据
|
||||
b := make([]byte, 32)
|
||||
if _, err := rand.Read(b); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// 转换为 16 进制字符串 (长度 64)
|
||||
cookie := hex.EncodeToString(b)
|
||||
return cookie
|
||||
}
|
||||
|
||||
func Md5Str(str string) string {
|
||||
hashBytes2 := md5.Sum([]byte(str))
|
||||
hashString2 := hex.EncodeToString(hashBytes2[:]) // 注意数组转切片的[:]
|
||||
return hashString2
|
||||
}
|
||||
|
||||
func HashUserPass(user *TabUser_) {
|
||||
switch ConfigsUser.PassHashType {
|
||||
case "text":
|
||||
break
|
||||
case "md5":
|
||||
user.Pass = Md5Str(user.Pass)
|
||||
|
||||
case "md5salt":
|
||||
if user.Salt == "" {
|
||||
user.Salt = RandStr32()
|
||||
}
|
||||
user.Pass = Md5Str(Md5Str(user.Pass) + user.Salt)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func IsExpired(expireTime time.Time) bool {
|
||||
return expireTime.Before(time.Now())
|
||||
}
|
||||
|
||||
func CheckCookiesAndUpdate(cookie *TabCookie_) bool {
|
||||
if !IsExpired(cookie.ExpiresAt) {
|
||||
if cookie.Remember {
|
||||
cookiewhere := TabCookie_{
|
||||
ID: cookie.ID,
|
||||
}
|
||||
cookieupdata := TabCookie_{
|
||||
UpdatedAt: time.Now(),
|
||||
ExpiresAt: time.Now().Add(time.Duration(ConfigsUser.CookieTimeout) * time.Second),
|
||||
}
|
||||
DB.Where(&cookiewhere).Updates(&cookieupdata)
|
||||
|
||||
}
|
||||
return true
|
||||
} else {
|
||||
//以过期
|
||||
return false
|
||||
}
|
||||
//return false
|
||||
}
|
||||
|
||||
// 判断邮箱是否合法
|
||||
func IsEmailValid(email string) bool {
|
||||
// 正则表达式(覆盖 99% 常见邮箱格式)
|
||||
pattern := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
|
||||
regex := regexp.MustCompile(pattern)
|
||||
return regex.MatchString(email)
|
||||
}
|
||||
|
||||
// 判断字符串是否包含标点符号
|
||||
func IsContainsSpecialChar(str string) bool {
|
||||
specialChars := "!@#$%^&*()-+={}[]|\\:;\"'<>,.?/"
|
||||
return strings.ContainsAny(str, specialChars)
|
||||
}
|
||||
Reference in New Issue
Block a user