120 lines
2.6 KiB
Go
Raw Normal View History

2023-10-08 15:59:42 +07:00
package entity
import (
2025-03-04 20:36:17 +07:00
"enaklo-pos-be/internal/constants/role"
"enaklo-pos-be/internal/constants/userstatus"
2023-10-08 15:59:42 +07:00
"errors"
"time"
"golang.org/x/crypto/bcrypt"
)
type User struct {
2024-07-23 01:36:25 +07:00
ID int64
Name string
Email string
Password string
Status userstatus.UserStatus
NIK string
2024-08-04 01:14:59 +07:00
UserType string
2024-07-23 01:36:25 +07:00
CreatedAt time.Time
UpdatedAt time.Time
RoleID role.Role
2024-07-30 02:48:31 +07:00
PhoneNumber string
2024-07-23 01:36:25 +07:00
RoleName string
PartnerID *int64
SiteID *int64
SiteName string
PartnerName string
ResetPassword bool
2023-10-08 15:59:42 +07:00
}
2024-08-15 11:01:55 +07:00
type Customer struct {
ID int64
Name string
Email string
Password string
2025-03-08 00:35:23 +07:00
Phone string
Points int
2024-08-15 11:01:55 +07:00
Status userstatus.UserStatus
NIK string
UserType string
CreatedAt time.Time
UpdatedAt time.Time
RoleID role.Role
PhoneNumber string
RoleName string
PartnerID *int64
SiteID *int64
SiteName string
PartnerName string
ResetPassword bool
2025-03-15 15:51:18 +08:00
CustomerID string
BirthDate time.Time
2024-08-15 11:01:55 +07:00
}
2023-10-08 15:59:42 +07:00
type AuthenticateUser struct {
2024-08-04 01:14:59 +07:00
ID int64
2024-08-02 00:51:54 +07:00
Token string
Name string
RoleID role.Role
RoleName string
PartnerID *int64
PartnerName string
PartnerStatus string
SiteID *int64
SiteName string
ResetPassword bool
PartnerLicense PartnerLicense
2024-08-04 01:14:59 +07:00
UserType string
2023-10-08 15:59:42 +07:00
}
type UserRoleDB struct {
ID int64 `gorm:"primary_key;column:user_role_id" `
UserID int64 `gorm:"column:user_id"`
RoleID int64 `gorm:"column:role_id"`
PartnerID *int64 `gorm:"column:partner_id"`
2024-06-05 00:24:53 +07:00
SiteID *int64 `gorm:"column:site_id"`
2023-10-08 15:59:42 +07:00
CreatedAt time.Time `gorm:"column:created_at"`
UpdatedAt time.Time `gorm:"column:updated_at"`
}
func (UserRoleDB) TableName() string {
return "user_roles"
}
func (u *User) ToUserDB(createdBy int64) (*UserDB, error) {
hashedPassword, err := u.HashedPassword(u.Password)
if err != nil {
return nil, err
}
2024-06-03 14:40:50 +07:00
if u.RoleID == role.Admin && u.PartnerID == nil {
2023-10-08 15:59:42 +07:00
return nil, errors.New("invalid request")
}
return &UserDB{
2024-07-30 02:48:31 +07:00
Name: u.Name,
Email: u.Email,
Password: hashedPassword,
RoleID: int64(u.RoleID),
PartnerID: u.PartnerID,
Status: userstatus.Active,
CreatedBy: createdBy,
SiteID: u.SiteID,
PhoneNumber: u.PhoneNumber,
NIK: u.NIK,
2024-08-04 01:14:59 +07:00
UserType: u.UserType,
2023-10-08 15:59:42 +07:00
}, nil
}
func (u User) HashedPassword(password string) (string, error) {
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return "", err
}
return string(hashedPassword), nil
}