New code verification service
Some checks failed
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/chain_gateway Pipeline was successful
ci/woodpecker/push/fx_oracle Pipeline was successful
ci/woodpecker/push/frontend Pipeline was successful
ci/woodpecker/push/nats Pipeline was successful
ci/woodpecker/push/ledger Pipeline was successful
ci/woodpecker/push/notification Pipeline was successful
ci/woodpecker/push/payments_orchestrator Pipeline was successful
ci/woodpecker/push/bump_version Pipeline failed

This commit is contained in:
Stephan D
2025-11-21 16:41:41 +01:00
parent ef5b3dc1a7
commit e1e4c580e8
72 changed files with 1660 additions and 454 deletions

View File

@@ -0,0 +1,43 @@
package model
import (
"time"
"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 {
AccountBoundBase `bson:",inline" json:",inline"`
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
}
func NewConfirmationCode(accountRef primitive.ObjectID) *ConfirmationCode {
cc := &ConfirmationCode{}
cc.SetID(primitive.NewObjectID())
cc.AccountRef = &accountRef
return cc
}