✨ add comment verification
This commit is contained in:
66
utils/check_captcha.go
Normal file
66
utils/check_captcha.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/wenlng/go-captcha/v2/rotate"
|
||||
"github.com/wenlng/go-captcha/v2/slide"
|
||||
"schisandra-cloud-album/common/constant"
|
||||
"schisandra-cloud-album/common/redis"
|
||||
"schisandra-cloud-album/global"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// CheckSlideData 校验滑动验证码
|
||||
func CheckSlideData(point []int64, key string) bool {
|
||||
if point == nil || key == "" {
|
||||
return false
|
||||
}
|
||||
cacheDataByte, err := redis.Get(constant.CommentSubmitCaptchaRedisKey + key).Bytes()
|
||||
if len(cacheDataByte) == 0 || err != nil {
|
||||
return false
|
||||
}
|
||||
var dct *slide.Block
|
||||
if err = json.Unmarshal(cacheDataByte, &dct); err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
chkRet := false
|
||||
if 2 == len(point) {
|
||||
sx, _ := strconv.ParseFloat(fmt.Sprintf("%v", point[0]), 64)
|
||||
sy, _ := strconv.ParseFloat(fmt.Sprintf("%v", point[1]), 64)
|
||||
chkRet = slide.CheckPoint(int64(sx), int64(sy), int64(dct.X), int64(dct.Y), 4)
|
||||
}
|
||||
if chkRet {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// CheckRotateData 校验旋转验证码
|
||||
func CheckRotateData(angle string, key string) bool {
|
||||
if angle == "" || key == "" {
|
||||
return false
|
||||
}
|
||||
cacheDataByte, err := redis.Get(constant.UserLoginCaptchaRedisKey + key).Bytes()
|
||||
if err != nil || len(cacheDataByte) == 0 {
|
||||
global.LOG.Error(err)
|
||||
return false
|
||||
}
|
||||
var dct *rotate.Block
|
||||
if err = json.Unmarshal(cacheDataByte, &dct); err != nil {
|
||||
global.LOG.Error(err)
|
||||
return false
|
||||
}
|
||||
sAngle, err := strconv.ParseFloat(fmt.Sprintf("%v", angle), 64)
|
||||
if err != nil {
|
||||
global.LOG.Error(err)
|
||||
return false
|
||||
}
|
||||
chkRet := rotate.CheckAngle(int64(sAngle), int64(dct.Angle), 2)
|
||||
if chkRet {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
}
|
@@ -1,20 +1,25 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
"encoding/json"
|
||||
"github.com/gin-gonic/gin"
|
||||
"schisandra-cloud-album/api/user_api/dto"
|
||||
"schisandra-cloud-album/global"
|
||||
)
|
||||
|
||||
// SetSession sets session data with key and data
|
||||
func SetSession(c *gin.Context, key string, data interface{}) error {
|
||||
session, err := global.Session.Get(c.Request, key)
|
||||
if err != nil {
|
||||
global.LOG.Error("SetSession failed: ", err)
|
||||
return err
|
||||
}
|
||||
gob.Register(data)
|
||||
session.Values[key] = data
|
||||
jsonData, err := json.Marshal(data)
|
||||
if err != nil {
|
||||
global.LOG.Error("SetSession failed: ", err)
|
||||
return err
|
||||
}
|
||||
session.Values[key] = jsonData
|
||||
err = session.Save(c.Request, c.Writer)
|
||||
if err != nil {
|
||||
global.LOG.Error("SetSession failed: ", err)
|
||||
@@ -23,26 +28,28 @@ func SetSession(c *gin.Context, key string, data interface{}) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetSession(c *gin.Context, key string) interface{} {
|
||||
// GetSession gets session data with key
|
||||
func GetSession(c *gin.Context, key string) dto.ResponseData {
|
||||
session, err := global.Session.Get(c.Request, key)
|
||||
if err != nil {
|
||||
global.LOG.Error("GetSession failed: ", err)
|
||||
return nil
|
||||
return dto.ResponseData{}
|
||||
}
|
||||
jsonData, ok := session.Values[key]
|
||||
if !ok {
|
||||
global.LOG.Error("GetSession failed: ", "key not found")
|
||||
return nil
|
||||
return dto.ResponseData{}
|
||||
}
|
||||
var data interface{}
|
||||
var data dto.ResponseData
|
||||
err = json.Unmarshal(jsonData.([]byte), &data)
|
||||
if err != nil {
|
||||
global.LOG.Error("GetSession failed: ", err)
|
||||
return nil
|
||||
return dto.ResponseData{}
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
// DelSession deletes session data with key
|
||||
func DelSession(c *gin.Context, key string) {
|
||||
session, err := global.Session.Get(c.Request, key)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user