37 lines
1.6 KiB
Go
37 lines
1.6 KiB
Go
package user
|
|
|
|
import "time"
|
|
|
|
const (
|
|
RoleSuperAdmin = "superadmin"
|
|
RoleAdmin = "admin"
|
|
RoleUser = "user"
|
|
|
|
StatusActive = "active"
|
|
StatusSuspended = "suspended"
|
|
StatusUnverified = "unverified"
|
|
)
|
|
|
|
type User struct {
|
|
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
|
|
Name string `json:"name" gorm:"type:varchar(100);not null"`
|
|
Email string `json:"email" gorm:"type:varchar(150);uniqueIndex;not null"`
|
|
Password string `json:"-" gorm:"type:varchar(255)"`
|
|
GoogleID *string `json:"google_id,omitempty" gorm:"type:varchar(255);uniqueIndex;default:null"`
|
|
AvatarURL *string `json:"avatar_url,omitempty" gorm:"type:varchar(500);default:null"`
|
|
Role string `json:"role" gorm:"type:varchar(30);not null;default:'user';index"`
|
|
Status string `json:"status" gorm:"type:varchar(30);not null;default:'active';index"`
|
|
IsEmailVerified bool `json:"is_email_verified" gorm:"default:false"`
|
|
VerificationToken string `json:"-" gorm:"type:varchar(255)"`
|
|
ResetPasswordToken string `json:"-" gorm:"type:varchar(255)"`
|
|
ResetPasswordExpiresAt *time.Time `json:"-"`
|
|
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
|
|
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
|
|
CreatedBy *uint `json:"created_by" gorm:"default:null"`
|
|
UpdatedBy *uint `json:"updated_by" gorm:"default:null"`
|
|
}
|
|
|
|
func (User) TableName() string {
|
|
return "users"
|
|
}
|