Documentation
¶
Index ¶
- type AuthLimiter
- type InMemoryLimiter
- func (l *InMemoryLimiter) AllowChallengeResendAttempt(_ context.Context, ip net.IP, challengeID string) (bool, error)
- func (l *InMemoryLimiter) AllowChallengeVerifyAttempt(_ context.Context, ip net.IP, challengeID string) (bool, error)
- func (l *InMemoryLimiter) AllowLoginAttempt(_ context.Context, ip net.IP, email string) (bool, error)
- func (l *InMemoryLimiter) AllowPasswordResetAttempt(_ context.Context, ip net.IP, email string) (bool, error)
- func (l *InMemoryLimiter) AllowSignupAttempt(_ context.Context, ip net.IP, email string) (bool, error)
- type LimiterConfig
- type RateLimitedError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthLimiter ¶
type AuthLimiter interface {
AllowLoginAttempt(ctx context.Context, ip net.IP, email string) (bool, error)
AllowSignupAttempt(ctx context.Context, ip net.IP, email string) (bool, error)
AllowPasswordResetAttempt(ctx context.Context, ip net.IP, email string) (bool, error)
AllowChallengeVerifyAttempt(ctx context.Context, ip net.IP, challengeID string) (bool, error)
AllowChallengeResendAttempt(ctx context.Context, ip net.IP, challengeID string) (bool, error)
}
func NewInMemoryLimiter ¶
func NewInMemoryLimiter(cfg LimiterConfig) AuthLimiter
type InMemoryLimiter ¶
type InMemoryLimiter struct {
// contains filtered or unexported fields
}
func (*InMemoryLimiter) AllowChallengeResendAttempt ¶ added in v0.1.18
func (*InMemoryLimiter) AllowChallengeVerifyAttempt ¶ added in v0.1.18
func (*InMemoryLimiter) AllowLoginAttempt ¶
func (*InMemoryLimiter) AllowPasswordResetAttempt ¶ added in v0.1.18
func (*InMemoryLimiter) AllowSignupAttempt ¶
type LimiterConfig ¶
type LimiterConfig struct {
LoginIPLimit int
LoginIPWindow time.Duration
LoginEmailLimit int
LoginEmailWindow time.Duration
SignupIPLimit int
SignupIPWindow time.Duration
SignupEmailLimit int
SignupEmailWindow time.Duration
PasswordResetIPLimit int
PasswordResetIPWindow time.Duration
PasswordResetEmailLimit int
PasswordResetEmailWindow time.Duration
ChallengeVerifyIPLimit int
ChallengeVerifyIPWindow time.Duration
ChallengeVerifyIDLimit int
ChallengeVerifyIDWindow time.Duration
ChallengeResendIPLimit int
ChallengeResendIPWindow time.Duration
ChallengeResendIDLimit int
ChallengeResendIDWindow time.Duration
CleanupEvery int
MaxEntries int
}
type RateLimitedError ¶
RateLimitedError is returned when the caller should reject the attempt. RetryAfter can be used to set HTTP Retry-After header or show a UI message.
func IsRateLimited ¶
func IsRateLimited(err error) (*RateLimitedError, bool)
func (*RateLimitedError) Error ¶
func (e *RateLimitedError) Error() string
Click to show internal directories.
Click to hide internal directories.