Some checks failed
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/chain_gateway Pipeline was successful
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/frontend Pipeline was successful
ci/woodpecker/push/fx_oracle 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
86 lines
2.2 KiB
Go
Executable File
86 lines
2.2 KiB
Go
Executable File
package model
|
|
|
|
import (
|
|
"github.com/tech/sendico/pkg/db/storable"
|
|
"github.com/tech/sendico/pkg/mservice"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
type Filter int
|
|
|
|
type AccountBase struct {
|
|
storable.Base `bson:",inline" json:",inline"`
|
|
ArchivableBase `bson:",inline" json:",inline"`
|
|
Describable `bson:",inline" json:",inline"`
|
|
LastName string `bson:"lastName" json:"lastName"`
|
|
AvatarURL *string `bson:"avatarUrl,omitempty" json:"avatarUrl,omitempty"`
|
|
}
|
|
|
|
func (*AccountBase) Collection() string {
|
|
return mservice.Accounts
|
|
}
|
|
|
|
type AccountPublic struct {
|
|
AccountBase `bson:",inline" json:",inline"`
|
|
UserDataBase `bson:",inline" json:",inline"`
|
|
}
|
|
|
|
type Account struct {
|
|
AccountPublic `bson:",inline" json:",inline"`
|
|
EmailBackup string `bson:"emailBackup" json:"emailBackup"`
|
|
Password string `bson:"password" json:"password"`
|
|
ResetPasswordToken string `bson:"resetPasswordToken" json:"resetPasswordToken"`
|
|
VerifyToken string `bson:"verifyToken" json:"verifyToken"`
|
|
}
|
|
|
|
func (a *Account) HashPassword() error {
|
|
key, err := bcrypt.GenerateFromPassword([]byte(a.Password), bcrypt.DefaultCost)
|
|
if err == nil {
|
|
a.Password = string(key)
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func (a *Account) MatchPassword(password string) bool {
|
|
err := bcrypt.CompareHashAndPassword([]byte(a.Password), []byte(password))
|
|
|
|
return err == nil
|
|
}
|
|
|
|
func AnonymousUserName(orgRef primitive.ObjectID) string {
|
|
return "anonymous@" + orgRef.Hex()
|
|
}
|
|
|
|
func AccountIsAnonymous(account *UserDataBase, orgRef primitive.ObjectID) bool {
|
|
if account == nil {
|
|
return false
|
|
}
|
|
return AnonymousUserName(orgRef) == account.Login
|
|
}
|
|
|
|
type AccountBound interface {
|
|
GetAccountRef() primitive.ObjectID
|
|
}
|
|
|
|
type AccountBoundStorable interface {
|
|
storable.Storable
|
|
OrganizationBound
|
|
GetAccountRef() *primitive.ObjectID
|
|
}
|
|
|
|
const (
|
|
AccountRefField = "accountRef"
|
|
)
|
|
|
|
type AccountBoundBase struct {
|
|
storable.Base `bson:",inline" json:",inline"`
|
|
OrganizationBoundBase `bson:",inline" json:",inline"`
|
|
AccountRef *primitive.ObjectID `bson:"accountRef,omitempty" json:"accountRef,omitempty"`
|
|
}
|
|
|
|
func (a *AccountBoundBase) GetAccountRef() *primitive.ObjectID {
|
|
return a.AccountRef
|
|
}
|