forked from baron/baron-sso
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// User represents the user model stored in PostgreSQL
|
|
type User struct {
|
|
ID string `gorm:"primaryKey;type:uuid;default:gen_random_uuid()" json:"id"`
|
|
Email string `gorm:"uniqueIndex;not null" json:"email"`
|
|
PasswordHash string `gorm:"not null" json:"-"`
|
|
Name string `gorm:"not null" json:"name"`
|
|
Phone string `json:"phone"`
|
|
Role string `gorm:"default:'user'" json:"role"` // 'admin', 'user'
|
|
AffiliationType string `json:"affiliationType"`
|
|
CompanyCode string `json:"companyCode"`
|
|
Department string `json:"department"`
|
|
Status string `gorm:"default:'active'" json:"status"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
|
}
|
|
|
|
// BeforeCreate hook to generate UUID if not present
|
|
func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
|
|
if u.ID == "" {
|
|
u.ID = uuid.New().String()
|
|
}
|
|
return
|
|
}
|