package verification import ( "strings" verificationmodel "git.sendico.io/tech/sxchnge/product/verification/model" "git.sendico.io/tech/sxchnge/shared/logging/fields" "go.uber.org/zap" ) func tokenIsDigitsOnly(value string) bool { if value == "" { return false } for _, ch := range value { if ch < '0' || ch > '9' { return false } } return true } func tokenStateFields(token *verificationmodel.VerificationToken) []zap.Field { fields := []zap.Field{ mzap.StorableRef(token), mzap.ObjRef("token_account_ref", token.AccountRef), zap.String("token_purpose", string(token.Purpose)), zap.Bool("token_has_target", strings.TrimSpace(token.Target) != ""), zap.Bool("token_has_idempotency_key", token.IdempotencyKey != nil), zap.Bool("token_has_salt", token.Salt != nil), zap.Bool("token_used", token.UsedAt != nil), zap.Time("token_expires_at", token.ExpiresAt), zap.Int("token_attempts", token.Attempts), zap.Bool("token_has_max_retries", token.MaxRetries != nil), } if token.UsedAt != nil { fields = append(fields, zap.Time("token_used_at", *token.UsedAt)) } if token.MaxRetries != nil { fields = append(fields, zap.Int("token_max_retries", *token.MaxRetries)) } if strings.TrimSpace(token.ContextRef) != "" { fields = append(fields, zap.String("token_context_ref", token.ContextRef)) } return fields }