package models import ( "time" "gorm.io/gorm" ) // User is the persisted account the JWT guard and user API load. type User struct { ID uint `gorm:"column:id;primaryKey"` Email string `gorm:"column:email"` Password string `gorm:"column:password" json:"-"` MustChangePassword bool `gorm:"column:must_change_password"` Name *string `gorm:"column:name"` Surname *string `gorm:"column:surname"` IsActivated bool `gorm:"column:is_activated"` ActivatedAt *time.Time `gorm:"column:activated_at"` ActivationCode *string `gorm:"column:activation_code" json:"-"` ActivationCodeIssuedAt *time.Time `gorm:"column:activation_code_issued_at"` ResetPasswordCode *string `gorm:"column:reset_password_code" json:"-"` ResetPasswordCodeIssuedAt *time.Time `gorm:"column:reset_password_code_issued_at"` HasSelfSetPassword bool `gorm:"column:has_self_set_password"` MarketingConsent bool `gorm:"column:marketing_consent"` IsOnboarded bool `gorm:"column:is_onboarded"` OrganisationID *uint `gorm:"column:organisation_id"` OrganisationRole *string `gorm:"column:organisation_role"` PreferredLocale *string `gorm:"column:preferred_locale"` TokensValidAfter *time.Time `gorm:"column:tokens_valid_after"` CreatedIPAddress *string `gorm:"column:created_ip_address"` LastIPAddress *string `gorm:"column:last_ip_address"` DeletedAt gorm.DeletedAt `gorm:"column:deleted_at"` } func (User) TableName() string { return "users" } // MorphName is the PHP class string stored in system_files.attachment_type. func (User) MorphName() string { return `Golem15\User\Models\User` } // Fillable is the register/update field list. Username, PIN, and GDPR columns // stay out of Phase 7 because no ported handler reads them. func (User) Fillable() []string { return []string{ "name", "surname", "email", "password", "created_ip_address", "last_ip_address", "is_onboarded", "preferred_locale", "marketing_consent", "organisation_id", "organisation_role", "must_change_password", } } // Hidden mirrors PHP User::$hidden for the secrets this model stores. func (User) Hidden() []string { return []string{"password", "reset_password_code", "activation_code"} } // Rules is the register-time rule set. confirmed covers password_confirmation. func (User) Rules() map[string]string { return map[string]string{ "email": "required|between:6,255|email|unique:users", "password": "required|between:8,255|confirmed", "password_confirmation": "between:8,255", } } func init() { Register(User{}) }