29 lines
660 B
Go
29 lines
660 B
Go
package verification
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"time"
|
|
|
|
"github.com/tech/sendico/pkg/model"
|
|
"go.mongodb.org/mongo-driver/v2/bson"
|
|
)
|
|
|
|
var (
|
|
ErrTokenNotFound = errors.New("verification token not found")
|
|
ErrTokenAlreadyUsed = errors.New("verification token already used")
|
|
ErrTokenExpired = errors.New("verification token expired")
|
|
)
|
|
|
|
type DB interface {
|
|
// template.DB[*model.VerificationToken]
|
|
Create(
|
|
ctx context.Context,
|
|
accountRef bson.ObjectID,
|
|
purpose model.VerificationPurpose,
|
|
target string,
|
|
ttl time.Duration,
|
|
) (rawToken string, err error)
|
|
Consume(ctx context.Context, rawToken string) (*model.VerificationToken, error)
|
|
}
|