MCPcopy
hub / github.com/tinyauthapp/tinyauth / Cleanup

Method Cleanup

internal/service/oidc_service.go:682–734  ·  view source on GitHub ↗

Cleanup routine - Resource heavy due to the linked tables

()

Source from the content-addressed store, hash-verified

680
681// Cleanup routine - Resource heavy due to the linked tables
682func (service *OIDCService) Cleanup() {
683 // We need a context for the routine
684 ctx := context.Background()
685
686 ticker := time.NewTicker(time.Duration(30) * time.Minute)
687 defer ticker.Stop()
688
689 for range ticker.C {
690 currentTime := time.Now().Unix()
691
692 // For the OIDC tokens, if they are expired we delete the userinfo and codes
693 expiredTokens, err := service.queries.DeleteExpiredOidcTokens(ctx, repository.DeleteExpiredOidcTokensParams{
694 TokenExpiresAt: currentTime,
695 RefreshTokenExpiresAt: currentTime,
696 })
697
698 if err != nil {
699 tlog.App.Warn().Err(err).Msg("Failed to delete expired tokens")
700 }
701
702 for _, expiredToken := range expiredTokens {
703 err := service.DeleteOldSession(ctx, expiredToken.Sub)
704 if err != nil {
705 tlog.App.Warn().Err(err).Msg("Failed to delete old session")
706 }
707 }
708
709 // For expired codes, we need to get the sub, check if tokens are expired and if they are remove everything
710 expiredCodes, err := service.queries.DeleteExpiredOidcCodes(ctx, currentTime)
711
712 if err != nil {
713 tlog.App.Warn().Err(err).Msg("Failed to delete expired codes")
714 }
715
716 for _, expiredCode := range expiredCodes {
717 token, err := service.queries.GetOidcTokenBySub(ctx, expiredCode.Sub)
718
719 if err != nil {
720 if err == sql.ErrNoRows {
721 continue
722 }
723 tlog.App.Warn().Err(err).Msg("Failed to get OIDC token by sub")
724 }
725
726 if token.TokenExpiresAt < currentTime && token.RefreshTokenExpiresAt < currentTime {
727 err := service.DeleteOldSession(ctx, expiredCode.Sub)
728 if err != nil {
729 tlog.App.Warn().Err(err).Msg("Failed to delete session")
730 }
731 }
732 }
733 }
734}
735
736func (service *OIDCService) GetJWK() ([]byte, error) {
737 hasher := sha256.New()

Callers 4

TestUserControllerFunction · 0.80
TestWellKnownControllerFunction · 0.80
TestOIDCControllerFunction · 0.80
TestProxyControllerFunction · 0.80

Calls 4

DeleteOldSessionMethod · 0.95
GetOidcTokenBySubMethod · 0.80

Tested by 4

TestUserControllerFunction · 0.64
TestWellKnownControllerFunction · 0.64
TestOIDCControllerFunction · 0.64
TestProxyControllerFunction · 0.64