Files
phishingclub/backend/database/user.go
2025-08-21 16:14:09 +02:00

50 lines
1.1 KiB
Go

package database
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
const (
USER_TABLE = "users"
)
// User is a database user
type User struct {
ID *uuid.UUID `gorm:"primary_key;not null;unique;type:uuid"`
CreatedAt *time.Time `gorm:"not null;index;"`
UpdatedAt *time.Time `gorm:"not null;index"`
DeletedAt gorm.DeletedAt `gorm:"index;"`
Name string `gorm:"not null;"`
Username string `gorm:"not null;unique;"`
Email string `gorm:"unique;"`
PasswordHash string `gorm:"type:varchar(255);"`
RequirePasswordRenew bool `gorm:"default:false;"`
// MFA
TOTPEnabled bool `gorm:"default:false;"`
TOTPSecret string
TOTPAuthURL string
// TODO rename to MFARecoveryCode
TOTPRecoveryCode string `gorm:"type:varchar(64);"`
// SSO id
SSOID string
// maybe has one
CompanyID *uuid.UUID `gorm:"type:uuid;index;"`
Company *Company
// has one
RoleID *uuid.UUID `gorm:"not null;type:uuid;index"`
Role *Role
// APIKey
APIKey string `gorm:"index"`
}
func (User) TableName() string {
return USER_TABLE
}