package model import ( "time" "github.com/tech/sendico/pkg/db/storable" "github.com/tech/sendico/pkg/mservice" "go.mongodb.org/mongo-driver/bson/primitive" ) type ConfirmationTarget string const ( ConfirmationTargetLogin ConfirmationTarget = "login" ConfirmationTargetPayout ConfirmationTarget = "payout" ) // ConfirmationCode stores verification codes for operations like login or payouts. type ConfirmationCode struct { storable.Base `bson:",inline" json:",inline"` AccountRef primitive.ObjectID `bson:"accountRef" json:"accountRef"` Destination string `bson:"destination" json:"destination"` Target ConfirmationTarget `bson:"target" json:"target"` CodeHash []byte `bson:"codeHash" json:"-"` Salt []byte `bson:"salt" json:"-"` ExpiresAt time.Time `bson:"expiresAt" json:"expiresAt"` Attempts int `bson:"attempts" json:"attempts"` MaxAttempts int `bson:"maxAttempts" json:"maxAttempts"` ResendCount int `bson:"resendCount" json:"resendCount"` ResendLimit int `bson:"resendLimit" json:"resendLimit"` CooldownUntil time.Time `bson:"cooldownUntil" json:"cooldownUntil"` Used bool `bson:"used" json:"used"` } func (c *ConfirmationCode) Collection() string { return mservice.Confirmations }