Skip to content

Commit

Permalink
fix: remove default maxAgeInSeconds in emailverification claim
Browse files Browse the repository at this point in the history
  • Loading branch information
anku255 committed Jul 10, 2024
1 parent 966a65a commit 2fbdfb4
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 8 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [unreleased]

## [0.23.0] - 2024-07-10

### Breaking Changes

- Removes the default `maxAgeInSeconds` value (previously 300 seconds) in EmailVerification Claim. If the claim value is true and `maxAgeInSeconds` is not provided, it will not be refetched.

## [0.22.1] - 2024-07-09

### Changes
Expand Down
29 changes: 22 additions & 7 deletions recipe/emailverification/emailverificationClaim.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ func NewEmailVerificationClaim() (*claims.TypeSessionClaim, evclaims.TypeEmailVe
}
}

var defaultMaxAge int64 = 300
evClaim, booleanClaimValidators := claims.BooleanClaim("st-ev", fetchValue, &defaultMaxAge)
evClaim, booleanClaimValidators := claims.BooleanClaim("st-ev", fetchValue, nil)

getLastRefetchTime := func(payload map[string]interface{}, userContext supertokens.UserContext) *int64 {
if value, ok := payload[evClaim.Key].(map[string]interface{}); ok {
Expand All @@ -57,15 +56,31 @@ func NewEmailVerificationClaim() (*claims.TypeSessionClaim, evclaims.TypeEmailVe
var defaultTimeout int64 = 10
refetchTimeOnFalseInSeconds = &defaultTimeout
}
if maxAgeInSeconds == nil {
var defaultTimeout int64 = 300
maxAgeInSeconds = &defaultTimeout
}

claimValidator := booleanClaimValidators.HasValue(true, maxAgeInSeconds, nil)
claimValidator.ShouldRefetch = func(payload map[string]interface{}, userContext supertokens.UserContext) bool {
value := evClaim.GetValueFromPayload(payload, userContext)
return value == nil || (*getLastRefetchTime(payload, userContext) < time.Now().UnixNano()/1000000-*maxAgeInSeconds*1000) || (value == false && *getLastRefetchTime(payload, userContext) < time.Now().UnixNano()/1000000-*refetchTimeOnFalseInSeconds*1000)

if value == nil {
return true
}

currentTime := time.Now().UnixNano() / 1000000
lastRefetchTime := getLastRefetchTime(payload, userContext)

if maxAgeInSeconds != nil {
if lastRefetchTime != nil && *lastRefetchTime < currentTime-*maxAgeInSeconds*1000 {
return true
}
}

if value == false {
if lastRefetchTime != nil && *lastRefetchTime < currentTime-*refetchTimeOnFalseInSeconds*1000 {
return true
}
}

return false
}
return claimValidator
},
Expand Down
2 changes: 1 addition & 1 deletion supertokens/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const (
)

// VERSION current version of the lib
const VERSION = "0.22.1"
const VERSION = "0.23.0"

var (
cdiSupported = []string{"3.0"}
Expand Down

0 comments on commit 2fbdfb4

Please sign in to comment.