Documentation
¶
Index ¶
Constants ¶
View Source
const ( // Phone number used to migrate accounts that were used in Code prior to // phone verification. GrandFatheredPhoneNumber = "+16472222222" )
Variables ¶
View Source
var ( // ErrVerificationNotFound is returned when no verification(s) are found. ErrVerificationNotFound = errors.New("phone verification not found") // ErrInvalidVerification is returned if the verification is invalid. ErrInvalidVerification = errors.New("verification is invalid") // ErrMetadataNotFound is returned when no metadata is found. ErrMetadataNotFound = errors.New("phone metadata not found") // ErrLinkingTokenNotFound is returned when no link token is found. ErrLinkingTokenNotFound = errors.New("linking token not found") // ErrEventNotFound is returned when no phone event is found. ErrEventNotFound = errors.New("event not found") )
Functions ¶
This section is empty.
Types ¶
type Event ¶
type LinkingToken ¶
type LinkingToken struct {
PhoneNumber string
Code string
CurrentCheckCount uint32
MaxCheckCount uint32
ExpiresAt time.Time
}
func (*LinkingToken) Validate ¶
func (t *LinkingToken) Validate() error
type OwnerAccountSetting ¶
type OwnerAccountSetting struct {
OwnerAccount string
IsUnlinked *bool
CreatedAt time.Time
LastUpdatedAt time.Time
}
func (*OwnerAccountSetting) Validate ¶
func (s *OwnerAccountSetting) Validate() error
type Settings ¶
type Settings struct {
PhoneNumber string
ByOwnerAccount map[string]*OwnerAccountSetting
}
type Store ¶
type Store interface {
// SaveVerification upserts a verification. Updates will only occur on newer
// verifications and won't lower existing permission levels.
SaveVerification(ctx context.Context, v *Verification) error
// GetVerification gets a phone verification for the provided owner account
// and phone number pair.
GetVerification(ctx context.Context, account, phoneNumber string) (*Verification, error)
// GetLatestVerificationForAccount gets the latest verification for a given
// owner account.
GetLatestVerificationForAccount(ctx context.Context, account string) (*Verification, error)
// GetLatestVerificationForNumber gets the latest verification for a given
// phone number.
GetLatestVerificationForNumber(ctx context.Context, phoneNumber string) (*Verification, error)
// GetAllVerificationsForNumber gets all phone verifications for a given
// phoneNumber. The returned value will be order by the last verification
// time.
//
// todo: May want to consider using cursors, but for now we expect the number
// of owner accounts per number to be relatively small.
GetAllVerificationsForNumber(ctx context.Context, phoneNumber string) ([]*Verification, error)
// SaveLinkingToken uperts a phone linking token.
SaveLinkingToken(ctx context.Context, token *LinkingToken) error
// UseLinkingToken enforces the one-time use of the token if the phone number
// and code pair matches.
//
// todo: Enforce one active code per phone number with a limited numer of checks,
// as a security measure.
UseLinkingToken(ctx context.Context, phoneNumber, code string) error
// FilterVerifiedNumbers filters phone numbers that have been verified.
FilterVerifiedNumbers(ctx context.Context, phoneNumbers []string) ([]string, error)
// GetSettings gets settings for a phone number. The implementation guarantee
// an empty setting is returned if the DB entry doesn't exist.
GetSettings(ctx context.Context, phoneNumber string) (*Settings, error)
// SaveOwnerAccountSetting saves a phone setting for a given owner account.
// Only non-nil settings will be updated.
SaveOwnerAccountSetting(ctx context.Context, phoneNumber string, newSettings *OwnerAccountSetting) error
// PutEvent stores a new phone event
PutEvent(ctx context.Context, event *Event) error
// GetLatestEventForNumberByType gets the latest event for a phone number by type
GetLatestEventForNumberByType(ctx context.Context, phoneNumber string, eventType EventType) (*Event, error)
// CountEventsForVerificationByType gets the count of events by type for a given verification
CountEventsForVerificationByType(ctx context.Context, verification string, eventType EventType) (uint64, error)
// CountEventsForNumberByType gets the count of events by type for a given phone number since a
// timestamp
CountEventsForNumberByTypeSinceTimestamp(ctx context.Context, phoneNumber string, eventType EventType, since time.Time) (uint64, error)
// CountUniqueVerificationIdsForNumberSinceTimestamp counts the number of unique verifications a
// phone number has been involved in since a timestamp.
CountUniqueVerificationIdsForNumberSinceTimestamp(ctx context.Context, phoneNumber string, since time.Time) (uint64, error)
}
Click to show internal directories.
Click to hide internal directories.