feat: fix bug in InitCleanupTokens() (#3910)

This commit is contained in:
Attack825
2025-06-27 02:08:18 +08:00
committed by GitHub
parent e2e3c1fbb8
commit c9f8727890

View File

@ -18,19 +18,19 @@ import (
"fmt" "fmt"
"time" "time"
"github.com/casdoor/casdoor/util"
"github.com/golang-jwt/jwt/v5" "github.com/golang-jwt/jwt/v5"
"github.com/robfig/cron/v3" "github.com/robfig/cron/v3"
) )
func CleanupTokens(tokenRetentionIntervalAfterExpiry int) error { func CleanupTokens(tokenRetentionIntervalAfterExpiry int) error {
var sessions []*Token var sessions []*Token
err := ormer.Engine.Where("expires_in = ?", 0).Find(&sessions) err := ormer.Engine.Find(&sessions)
if err != nil { if err != nil {
return fmt.Errorf("failed to query expired tokens: %w", err) return fmt.Errorf("failed to query expired tokens: %w", err)
} }
currentTime := util.String2Time(util.GetCurrentUnixTime()) currentTime := time.Now()
deletedCount := 0
for _, session := range sessions { for _, session := range sessions {
tokenString := session.AccessToken tokenString := session.AccessToken
@ -53,7 +53,9 @@ func CleanupTokens(tokenRetentionIntervalAfterExpiry int) error {
if err != nil { if err != nil {
return fmt.Errorf("failed to delete expired token %s: %w", session.Name, err) return fmt.Errorf("failed to delete expired token %s: %w", session.Name, err)
} }
fmt.Printf("Deleted expired token: %s\n", session.Name) fmt.Printf("[%d] Deleted expired token: %s | Created: %s | Org: %s | App: %s | User: %s\n",
deletedCount, session.Name, session.CreatedTime, session.Organization, session.Application, session.User)
deletedCount++
} }
} else { } else {
fmt.Printf("Token %s is not valid\n", session.Name) fmt.Printf("Token %s is not valid\n", session.Name)
@ -70,10 +72,15 @@ func getTokenRetentionInterval(days int) int {
} }
func InitCleanupTokens() { func InitCleanupTokens() {
schedule := "0 0 0 * * ?" schedule := "0 0 * * *"
interval := getTokenRetentionInterval(30)
if err := CleanupTokens(interval); err != nil {
fmt.Printf("Error cleaning up tokens at startup: %v\n", err)
}
cronJob := cron.New() cronJob := cron.New()
_, err := cronJob.AddFunc(schedule, func() { _, err := cronJob.AddFunc(schedule, func() {
interval := getTokenRetentionInterval(30)
if err := CleanupTokens(interval); err != nil { if err := CleanupTokens(interval); err != nil {
fmt.Printf("Error cleaning up tokens: %v\n", err) fmt.Printf("Error cleaning up tokens: %v\n", err)
} }