70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package verification
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.sendico.io/tech/sxchnge/bff/pkg/merrors"
|
|
)
|
|
|
|
var (
|
|
ErrTokenNotFound = merrors.Define("vtNotFound")
|
|
ErrTokenAlreadyUsed = merrors.Define("vtAlreadyUsed")
|
|
ErrTokenExpired = merrors.Define("vtExpired")
|
|
ErrTokenAttemptsExceeded = merrors.Define("vtAttemptsExceeded")
|
|
ErrCooldownActive = merrors.Define("vtCooldownActive")
|
|
ErrIdempotencyConflict = merrors.Define("vtIdempotencyConflict")
|
|
ErrIssuanceRateLimited = merrors.Define("vtIssuanceRateLimited")
|
|
)
|
|
|
|
type ThrottleDetails = merrors.ThrottleDetails
|
|
|
|
func Throttle(err error) (ThrottleDetails, bool) {
|
|
return merrors.ThrottleDetailsFrom(err)
|
|
}
|
|
|
|
func wrap(err error, msg string) error {
|
|
return merrors.Wrap(err, msg)
|
|
}
|
|
|
|
func ErorrTokenNotFound() error {
|
|
return wrap(ErrTokenNotFound, "verification token not found")
|
|
}
|
|
|
|
func ErorrTokenAlreadyUsed() error {
|
|
return wrap(ErrTokenAlreadyUsed, "verification token has already been used")
|
|
}
|
|
|
|
func ErorrTokenExpired() error {
|
|
return wrap(ErrTokenExpired, "verification token expired")
|
|
}
|
|
|
|
func ErrorCooldownActive() error {
|
|
return ErrorCooldownActiveFor(0)
|
|
}
|
|
|
|
func ErrorCooldownActiveFor(retryAfter time.Duration) error {
|
|
return merrors.WithThrottle(
|
|
ErrCooldownActive,
|
|
"cooldown",
|
|
retryAfter,
|
|
"verification request is temporarily limited",
|
|
)
|
|
}
|
|
|
|
func ErrorIssuanceRateLimited(scopeKind string, retryAfter time.Duration) error {
|
|
return merrors.WithThrottle(
|
|
ErrIssuanceRateLimited,
|
|
scopeKind,
|
|
retryAfter,
|
|
"verification request is temporarily limited",
|
|
)
|
|
}
|
|
|
|
func ErrorTokenAttemptsExceeded() error {
|
|
return wrap(ErrTokenAttemptsExceeded, "verification token max attempts exceeded")
|
|
}
|
|
|
|
func ErrorIdempotencyConflict() error {
|
|
return wrap(ErrIdempotencyConflict, "verification token request idempotency key has already been used")
|
|
}
|