Cleanup routine - Resource heavy due to the linked tables
()
| 680 | |
| 681 | // Cleanup routine - Resource heavy due to the linked tables |
| 682 | func (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 | |
| 736 | func (service *OIDCService) GetJWK() ([]byte, error) { |
| 737 | hasher := sha256.New() |