ratelimiter

package
v0.1.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 7, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

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 (l *InMemoryLimiter) AllowChallengeResendAttempt(_ context.Context, ip net.IP, challengeID string) (bool, error)

func (*InMemoryLimiter) AllowChallengeVerifyAttempt added in v0.1.18

func (l *InMemoryLimiter) AllowChallengeVerifyAttempt(_ context.Context, ip net.IP, challengeID string) (bool, error)

func (*InMemoryLimiter) AllowLoginAttempt

func (l *InMemoryLimiter) AllowLoginAttempt(_ context.Context, ip net.IP, email string) (bool, error)

func (*InMemoryLimiter) AllowPasswordResetAttempt added in v0.1.18

func (l *InMemoryLimiter) AllowPasswordResetAttempt(_ context.Context, ip net.IP, email string) (bool, error)

func (*InMemoryLimiter) AllowSignupAttempt

func (l *InMemoryLimiter) AllowSignupAttempt(_ context.Context, ip net.IP, email string) (bool, error)

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

type RateLimitedError struct {
	RetryAfter time.Duration
	Scope      string
}

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL