From 7891733c3928a90de88ac0feb0236057dc9c6f76 Mon Sep 17 00:00:00 2001 From: Matous Jobanek Date: Wed, 15 Jan 2025 17:13:01 +0100 Subject: [PATCH] fix daily counter --- .../service/verification_service.go | 23 ++++++++++--------- .../service/verification_service_test.go | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pkg/verification/service/verification_service.go b/pkg/verification/service/verification_service.go index e4e990c5..3da87ef1 100644 --- a/pkg/verification/service/verification_service.go +++ b/pkg/verification/service/verification_service.go @@ -103,17 +103,6 @@ func (s *ServiceImpl) InitVerification(ctx *gin.Context, userID, username, e164P labelValues[toolchainv1alpha1.UserSignupUserPhoneHashLabelKey] = phoneHash - // read the current time - now := time.Now() - - // If 24 hours has passed since the verification timestamp, then reset the timestamp and verification attempts - ts, parseErr := time.Parse(TimestampLayout, signup.Annotations[toolchainv1alpha1.UserSignupVerificationInitTimestampAnnotationKey]) - if parseErr != nil || now.After(ts.Add(24*time.Hour)) { - // Set a new timestamp - annotationValues[toolchainv1alpha1.UserSignupVerificationInitTimestampAnnotationKey] = now.Format(TimestampLayout) - annotationValues[toolchainv1alpha1.UserSignupVerificationCounterAnnotationKey] = "0" - } - // get the verification counter (i.e. the number of times the user has initiated phone verification within // the last 24 hours) verificationCounter := signup.Annotations[toolchainv1alpha1.UserSignupVerificationCounterAnnotationKey] @@ -134,6 +123,18 @@ func (s *ServiceImpl) InitVerification(ctx *gin.Context, userID, username, e164P } } + // read the current time + now := time.Now() + + // If 24 hours has passed since the verification timestamp, then reset the timestamp and verification attempts + ts, parseErr := time.Parse(TimestampLayout, signup.Annotations[toolchainv1alpha1.UserSignupVerificationInitTimestampAnnotationKey]) + if parseErr != nil || now.After(ts.Add(24*time.Hour)) { + // Set a new timestamp + annotationValues[toolchainv1alpha1.UserSignupVerificationInitTimestampAnnotationKey] = now.Format(TimestampLayout) + annotationValues[toolchainv1alpha1.UserSignupVerificationCounterAnnotationKey] = "0" + counter = 0 + } + var initError error // check if counter has exceeded the limit of daily limit - if at limit error out if counter >= dailyLimit { diff --git a/pkg/verification/service/verification_service_test.go b/pkg/verification/service/verification_service_test.go index 464fc43a..394eb858 100644 --- a/pkg/verification/service/verification_service_test.go +++ b/pkg/verification/service/verification_service_test.go @@ -339,8 +339,8 @@ func (s *TestVerificationServiceSuite) TestInitVerificationPassesWhenMaxCountRea userSignup := testusersignup.NewUserSignup( testusersignup.WithName("johny"), testusersignup.WithLabel(toolchainv1alpha1.UserSignupUserPhoneHashLabelKey, "+1NUMBER"), - testusersignup.WithAnnotation(toolchainv1alpha1.UserSignupVerificationInitTimestampAnnotationKey, now.Format(verificationservice.TimestampLayout)), - testusersignup.WithAnnotation(toolchainv1alpha1.UserVerificationAttemptsAnnotationKey, "3"), + testusersignup.WithAnnotation(toolchainv1alpha1.UserSignupVerificationInitTimestampAnnotationKey, now.Add(-25*time.Hour).Format(verificationservice.TimestampLayout)), + testusersignup.WithAnnotation(toolchainv1alpha1.UserSignupVerificationCounterAnnotationKey, "3"), testusersignup.WithAnnotation(toolchainv1alpha1.UserSignupVerificationCodeAnnotationKey, "123456"), testusersignup.VerificationRequiredAgo(time.Second))