• erio's avatar
    fix: round-2 audit fixes — security, code quality, and UI improvements · a9880ee7
    erio authored
    Security (HIGH):
    - Normalize all Redis cache keys to lowercase (verifyCode, passwordReset)
    - Fix verify code TTL renewal on failed attempts: use remaining TTL via
      ExpiresAt field instead of resetting to full 15-minute window
    - Add 3 missing fields to diffSettings audit log (promo_code, invitation_code,
      custom_endpoints)
    
    Code quality (MEDIUM):
    - Extract filterVerifiedEmails shared helper (balance_notify_service.go)
    - Add Pricing array non-empty validation for channel pricing rules
    - Add platform token semantics comment in gateway_service.go
    - Complete validatePlanPatch test coverage (+10 test cases)
    - Replace string types with QuotaThresholdType/QuotaResetMode across frontend
    - Remove duplicate getPlatformTextColor/getRateBadgeClass in ChannelsView
    - Return EMAIL_NOT_FOUND error on RemoveNotifyEmail miss
    
    UI improvements:
    - Reorder cost tooltip: user billing above separator, account billing below
    - Add NaN guard to accountBilled function
    - Move timezone selector inline into reset-mode row (no longer standalone)
    a9880ee7
UsageTable.vue 25.1 KB