Organize backend into product executable and shared Go modules
This commit is contained in:
1 parent
981e84a4b4
commit
f0720ec66b
382 files changed
+1944
-6989
No files matched your search
@@ -0,0 +1,70 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"git.sendico.io/tech/sxchnge/shared/database/record"
|
||||
sharedmodel "git.sendico.io/tech/sxchnge/shared/model"
|
||||
"git.sendico.io/tech/sxchnge/shared/service"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
type Filter int
|
||||
|
||||
type AccountStatus string
|
||||
|
||||
const (
|
||||
AccountPendingVerification AccountStatus = "pending_verification"
|
||||
AccountActive AccountStatus = "active"
|
||||
AccountBlocked AccountStatus = "blocked"
|
||||
)
|
||||
|
||||
type AccountBase struct {
|
||||
storable.Base `bson:",inline" json:",inline"`
|
||||
sharedmodel.ArchivableBase `bson:",inline" json:",inline"`
|
||||
sharedmodel.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"`
|
||||
Password string `bson:"password" json:"-"` // password hash
|
||||
Status AccountStatus `bson:"status" json:"-"`
|
||||
}
|
||||
|
||||
func (a *Account) Copy() *Account {
|
||||
if a == nil {
|
||||
return nil
|
||||
}
|
||||
copied := *a
|
||||
return &copied
|
||||
}
|
||||
|
||||
func (a *Account) IsActive() bool {
|
||||
return a.Status == AccountActive
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
const AccountRefField = "accountRef"
|
||||
@@ -0,0 +1,32 @@
|
||||
package model
|
||||
|
||||
import sharedmodel "git.sendico.io/tech/sxchnge/shared/model"
|
||||
|
||||
type UserDataBase struct {
|
||||
Login string `bson:"login" json:"login"`
|
||||
Locale string `bson:"locale" json:"locale"`
|
||||
}
|
||||
|
||||
type LoginData struct {
|
||||
UserDataBase `bson:",inline" json:",inline"`
|
||||
Password string ` bson:"-" json:"password"`
|
||||
}
|
||||
|
||||
type AccountData struct {
|
||||
LoginData `bson:",inline" json:",inline"`
|
||||
sharedmodel.Describable `bson:",inline" json:",inline"`
|
||||
LastName string `bson:"lastName" json:"lastName"`
|
||||
}
|
||||
|
||||
func (ad *AccountData) ToAccount() *Account {
|
||||
return &Account{
|
||||
AccountPublic: AccountPublic{
|
||||
AccountBase: AccountBase{
|
||||
Describable: ad.Describable,
|
||||
LastName: ad.LastName,
|
||||
},
|
||||
UserDataBase: ad.UserDataBase,
|
||||
},
|
||||
Password: ad.Password,
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user