feat: add kyc layer service
This commit is contained in:
+60
-49
@@ -39,12 +39,19 @@ type ChallengeRepo interface {
|
||||
Delete(ctx context.Context, pubKey string) error
|
||||
}
|
||||
|
||||
type KYCLevel int8
|
||||
|
||||
const (
|
||||
KYCLevel0 KYCLevel = iota
|
||||
KYCLevel1
|
||||
KYCLevel2
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uuid.UUID
|
||||
PubKey string
|
||||
Name string
|
||||
//TODO: add Kyc Embedded struct
|
||||
//TODO: add NFT Embedded struct
|
||||
ID uuid.UUID
|
||||
PubKey string
|
||||
Name string
|
||||
KYCLevel KYCLevel
|
||||
LastName string
|
||||
PhoneNumber string
|
||||
Email *string
|
||||
@@ -56,7 +63,54 @@ type User struct {
|
||||
DeletedAt *time.Time
|
||||
}
|
||||
|
||||
// TODO: move to another file?
|
||||
func NewUser(pubKey, name, lastName, phoneNumber, email, nationalID string) (*User, error) {
|
||||
|
||||
_, err := validate.IsValidPhone(phoneNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = validate.IsValidNationalID(nationalID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = validate.IsValidPublicKey(pubKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &User{
|
||||
ID: uuid.New(),
|
||||
PubKey: pubKey,
|
||||
Name: name,
|
||||
LastName: lastName,
|
||||
PhoneNumber: phoneNumber,
|
||||
NationalID: nationalID,
|
||||
CreatedAt: time.Now().UTC(),
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (u *User) UpdateLastLogin() {
|
||||
now := time.Now().UTC()
|
||||
u.LastLogin = &now
|
||||
u.UpdatedAt = now
|
||||
}
|
||||
|
||||
func (u *User) UpdateInfo(email string) {
|
||||
addr, err := mail.ParseAddress(email)
|
||||
if err == nil {
|
||||
u.Email = &addr.Address
|
||||
}
|
||||
u.UpdatedAt = time.Now().UTC()
|
||||
}
|
||||
|
||||
func (u *User) UpdateKYCLevel(level KYCLevel) {
|
||||
u.KYCLevel = level
|
||||
u.UpdatedAt = time.Now().UTC()
|
||||
}
|
||||
|
||||
type Challenge struct {
|
||||
Message string
|
||||
TimeStamp time.Time
|
||||
@@ -106,46 +160,3 @@ func (c *Challenge) VerifySignedBytes(expectedAddress string, msg []byte, sig []
|
||||
|
||||
return strings.EqualFold(expectedAddr.Hex(), recoveredAddr.Hex()), nil
|
||||
}
|
||||
|
||||
func NewUser(pubKey, name, lastName, phoneNumber, email, nationalID string) (*User, error) {
|
||||
|
||||
_, err := validate.IsValidPhone(phoneNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = validate.IsValidNationalID(nationalID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_, err = validate.IsValidPublicKey(pubKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &User{
|
||||
ID: uuid.New(),
|
||||
PubKey: pubKey,
|
||||
Name: name,
|
||||
LastName: lastName,
|
||||
PhoneNumber: phoneNumber,
|
||||
NationalID: nationalID,
|
||||
CreatedAt: time.Now().UTC(),
|
||||
UpdatedAt: time.Now().UTC(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (u *User) UpdateLastLogin() {
|
||||
now := time.Now().UTC()
|
||||
u.LastLogin = &now
|
||||
u.UpdatedAt = now
|
||||
}
|
||||
|
||||
func (u *User) UpdateInfo(email string) {
|
||||
addr, err := mail.ParseAddress(email)
|
||||
if err == nil {
|
||||
u.Email = &addr.Address
|
||||
}
|
||||
u.UpdatedAt = time.Now().UTC()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user