Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"bytes"
|
|
"time"
|
|
"videoweb/pub/common/enum/redisconst"
|
|
sErr "videoweb/pub/common/errors"
|
|
"videoweb/pub/redis"
|
|
)
|
|
|
|
const (
|
|
expireTime = 30 * 24 * time.Hour
|
|
)
|
|
|
|
type TokenRedis struct {
|
|
}
|
|
|
|
func NewTokenRedis() *TokenRedis {
|
|
return &TokenRedis{}
|
|
}
|
|
|
|
func (tr *TokenRedis) Save(userId int64, token string) (err error) {
|
|
if err = tr.Delete(userId); err != nil {
|
|
return
|
|
}
|
|
err = redis.Set(redisconst.AppUserTokenKey(userId), token, expireTime)
|
|
if err != nil {
|
|
err = sErr.MakeWithErr(sErr.RedisSet, err)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (tr *TokenRedis) Exists(userId int64, token string) (has bool, err error) {
|
|
tokenbytes, err := tr.Get(userId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
has = bytes.Compare(tokenbytes, []byte(token)) == 0
|
|
return
|
|
}
|
|
|
|
func (tr *TokenRedis) Get(userId int64) (token []byte, err error) {
|
|
token, err = redis.GetBytes(redisconst.AppUserTokenKey(userId))
|
|
if err != nil {
|
|
err = sErr.MakeWithErr(sErr.RedisGet, err)
|
|
}
|
|
return
|
|
}
|
|
|
|
func (tr *TokenRedis) Delete(userId int64) (err error) {
|
|
err = redis.Del(redisconst.AppUserTokenKey(userId))
|
|
if err != nil {
|
|
err = sErr.MakeWithErr(sErr.RedisDel, err)
|
|
}
|
|
return
|
|
}
|