kra/internal/data/system/jwt_blacklist.go

38 lines
921 B
Go

package system
import (
"context"
"kra/internal/biz/system"
"kra/internal/data/model"
"kra/internal/data/query"
"gorm.io/gorm"
)
type jwtBlacklistRepo struct {
db *gorm.DB
}
// NewJwtBlacklistRepo 创建JWT黑名单仓储
func NewJwtBlacklistRepo(db *gorm.DB) system.JwtBlacklistRepo {
query.SetDefault(db)
return &jwtBlacklistRepo{db: db}
}
func (r *jwtBlacklistRepo) Create(ctx context.Context, jwt string) error {
m := &model.JwtBlacklist{Jwt: jwt}
return query.JwtBlacklist.WithContext(ctx).Create(m)
}
func (r *jwtBlacklistRepo) IsInBlacklist(ctx context.Context, jwt string) bool {
count, _ := query.JwtBlacklist.WithContext(ctx).Where(query.JwtBlacklist.Jwt.Eq(jwt)).Count()
return count > 0
}
func (r *jwtBlacklistRepo) LoadAll(ctx context.Context) ([]string, error) {
var jwts []string
err := r.db.WithContext(ctx).Model(&model.JwtBlacklist{}).Pluck("jwt", &jwts).Error
return jwts, err
}