Documentation ¶
Index ¶
- Constants
- Variables
- func GenerateDeviceToken() string
- type CookieDef
- type DeviceToken
- type Lockout
- type LockoutProvider
- type RateLimiter
- type RecoveryCode
- type Service
- func (s *Service) ConsumeRecoveryCode(rc *RecoveryCode) error
- func (s *Service) CreateDeviceToken(userID string, token string) (*DeviceToken, error)
- func (s *Service) GenerateDeviceToken() string
- func (s *Service) GenerateRecoveryCodes() []string
- func (s *Service) HasDeviceTokens(userID string) (bool, error)
- func (s *Service) InvalidateAllDeviceTokens(userID string) error
- func (s *Service) InvalidateAllRecoveryCode(userID string) error
- func (s *Service) ListRecoveryCodes(userID string) ([]*RecoveryCode, error)
- func (s *Service) ReplaceRecoveryCodes(userID string, codes []string) ([]*RecoveryCode, error)
- func (s *Service) VerifyDeviceToken(userID string, token string) error
- func (s *Service) VerifyRecoveryCode(userID string, code string) (*RecoveryCode, error)
- type StoreDeviceToken
- type StoreDeviceTokenRedis
- type StoreRecoveryCode
- type StoreRecoveryCodePQ
- func (s *StoreRecoveryCodePQ) CreateAll(codes []*RecoveryCode) error
- func (s *StoreRecoveryCodePQ) DeleteAll(userID string) error
- func (s *StoreRecoveryCodePQ) Get(userID string, code string) (*RecoveryCode, error)
- func (s *StoreRecoveryCodePQ) List(userID string) ([]*RecoveryCode, error)
- func (s *StoreRecoveryCodePQ) UpdateConsumed(code *RecoveryCode) error
Constants ¶
View Source
const ( VerifyDeviceTokenPerUserPerIP ratelimit.BucketName = "VerifyDeviceTokenPerUserPerIP" VerifyDeviceTokenPerIP ratelimit.BucketName = "VerifyDeviceTokenPerIP" VerifyRecoveryCodePerUserPerIP ratelimit.BucketName = "VerifyRecoveryCodePerUserPerIP" VerifyRecoveryCodePerIP ratelimit.BucketName = "VerifyRecoveryCodePerIP" )
Variables ¶
View Source
var DependencySet = wire.NewSet( NewDeviceTokenCookieDef, wire.Struct(new(StoreDeviceTokenRedis), "*"), wire.Bind(new(StoreDeviceToken), new(*StoreDeviceTokenRedis)), wire.Struct(new(StoreRecoveryCodePQ), "*"), wire.Bind(new(StoreRecoveryCode), new(*StoreRecoveryCodePQ)), wire.Struct(new(Service), "*"), wire.Struct(new(Lockout), "*"), )
View Source
var ErrDeviceTokenNotFound = errors.New("bearer token not found")
View Source
var ErrRecoveryCodeConsumed = errors.New("recovery code consumed")
View Source
var ErrRecoveryCodeNotFound = errors.New("recovery code not found")
Functions ¶
func GenerateDeviceToken ¶
func GenerateDeviceToken() string
Types ¶
type CookieDef ¶
func NewDeviceTokenCookieDef ¶
func NewDeviceTokenCookieDef(cfg *config.AuthenticationConfig) CookieDef
type DeviceToken ¶
type Lockout ¶
type Lockout struct { Config *config.AuthenticationLockoutConfig RemoteIP httputil.RemoteIP Provider LockoutProvider }
type LockoutProvider ¶
type LockoutProvider interface {
MakeAttempts(spec lockout.LockoutSpec, contributor string, attempts int) (result *lockout.MakeAttemptResult, err error)
}
type RateLimiter ¶
type RateLimiter interface { Reserve(spec ratelimit.BucketSpec) *ratelimit.Reservation Cancel(r *ratelimit.Reservation) }
type RecoveryCode ¶
type Service ¶
type Service struct { IP httputil.RemoteIP DeviceTokens StoreDeviceToken RecoveryCodes StoreRecoveryCode Clock clock.Clock Config *config.AuthenticationConfig RateLimiter RateLimiter Lockout Lockout }
func (*Service) ConsumeRecoveryCode ¶
func (s *Service) ConsumeRecoveryCode(rc *RecoveryCode) error
func (*Service) CreateDeviceToken ¶
func (s *Service) CreateDeviceToken(userID string, token string) (*DeviceToken, error)
func (*Service) GenerateDeviceToken ¶
func (*Service) GenerateRecoveryCodes ¶
func (*Service) InvalidateAllDeviceTokens ¶
func (*Service) InvalidateAllRecoveryCode ¶
func (*Service) ListRecoveryCodes ¶
func (s *Service) ListRecoveryCodes(userID string) ([]*RecoveryCode, error)
func (*Service) ReplaceRecoveryCodes ¶
func (s *Service) ReplaceRecoveryCodes(userID string, codes []string) ([]*RecoveryCode, error)
func (*Service) VerifyDeviceToken ¶
func (*Service) VerifyRecoveryCode ¶
func (s *Service) VerifyRecoveryCode(userID string, code string) (*RecoveryCode, error)
type StoreDeviceToken ¶
type StoreDeviceTokenRedis ¶
func (*StoreDeviceTokenRedis) Create ¶
func (s *StoreDeviceTokenRedis) Create(token *DeviceToken) error
func (*StoreDeviceTokenRedis) DeleteAll ¶
func (s *StoreDeviceTokenRedis) DeleteAll(userID string) error
func (*StoreDeviceTokenRedis) Get ¶
func (s *StoreDeviceTokenRedis) Get(userID string, token string) (*DeviceToken, error)
type StoreRecoveryCode ¶
type StoreRecoveryCode interface { List(userID string) ([]*RecoveryCode, error) Get(userID string, code string) (*RecoveryCode, error) DeleteAll(userID string) error CreateAll(codes []*RecoveryCode) error UpdateConsumed(code *RecoveryCode) error }
type StoreRecoveryCodePQ ¶
type StoreRecoveryCodePQ struct { SQLBuilder *appdb.SQLBuilderApp SQLExecutor *appdb.SQLExecutor }
func (*StoreRecoveryCodePQ) CreateAll ¶
func (s *StoreRecoveryCodePQ) CreateAll(codes []*RecoveryCode) error
func (*StoreRecoveryCodePQ) DeleteAll ¶
func (s *StoreRecoveryCodePQ) DeleteAll(userID string) error
func (*StoreRecoveryCodePQ) Get ¶
func (s *StoreRecoveryCodePQ) Get(userID string, code string) (*RecoveryCode, error)
func (*StoreRecoveryCodePQ) List ¶
func (s *StoreRecoveryCodePQ) List(userID string) ([]*RecoveryCode, error)
func (*StoreRecoveryCodePQ) UpdateConsumed ¶
func (s *StoreRecoveryCodePQ) UpdateConsumed(code *RecoveryCode) error
Click to show internal directories.
Click to hide internal directories.