wireguard-dashboard/compoment/captcha_store.go

55 lines
1.2 KiB
Go
Raw Normal View History

2024-03-06 17:13:29 +08:00
package compoment
import (
"context"
"fmt"
2024-03-06 17:31:39 +08:00
"strings"
2024-03-06 17:13:29 +08:00
"time"
"wireguard-dashboard/client"
"wireguard-dashboard/constant"
)
type CaptchaStore struct{}
// Set
// @description: 验证码放入指定存储
// @receiver CaptchaStore
// @param id
// @param value
// @return error
func (CaptchaStore) Set(id string, value string) error {
return client.Redis.Set(context.Background(), fmt.Sprintf("%s:%s", constant.Captcha, id), value, time.Minute).Err()
}
// Get
// @description: 获取验证码信息
// @receiver CaptchaStore
// @param id
// @param clear
// @return string
func (CaptchaStore) Get(id string, clear bool) string {
2024-03-06 17:31:39 +08:00
val, err := client.Redis.Get(context.Background(), fmt.Sprintf("%s:%s", constant.Captcha, id)).Result()
if err != nil {
return ""
}
2024-03-06 17:13:29 +08:00
2024-03-06 17:31:39 +08:00
if clear {
client.Redis.Del(context.Background(), fmt.Sprintf("%s:%s", constant.Captcha, id))
return val
}
return val
2024-03-06 17:13:29 +08:00
}
// Verify
// @description: 校验
// @receiver CaptchaStore
// @param id
// @param answer
// @param clear
// @return bool
2024-03-06 17:31:39 +08:00
func (c CaptchaStore) Verify(id, answer string, clear bool) bool {
storeAnswer := c.Get(id, clear)
return strings.ToUpper(answer) == strings.ToUpper(storeAnswer)
2024-03-06 17:13:29 +08:00
}