Files
3m-ui/backend/internal/database/models/proxy_user.go
T

29 lines
1.2 KiB
Go

package models
import (
"time"
"gorm.io/gorm"
)
// ProxyUser is a user account used to authenticate against Mihomo server nodes.
// It is deliberately separate from User, which represents a 3m-ui administrator.
type ProxyUser struct {
gorm.Model
Username string `gorm:"size:100;not null;uniqueIndex" json:"username"`
// PasswordEncrypted contains an AES-GCM encrypted password. It is never serialized to API responses.
PasswordEncrypted string `gorm:"type:text" json:"-"`
UUID string `gorm:"size:64;not null;uniqueIndex" json:"-"`
TrafficLimit int64 `gorm:"not null;default:0" json:"traffic_limit"`
TrafficUsed int64 `gorm:"not null;default:0" json:"traffic_used"`
UploadBytes int64 `gorm:"not null;default:0" json:"upload_bytes"`
DownloadBytes int64 `gorm:"not null;default:0" json:"download_bytes"`
LastSeen *time.Time `json:"last_seen"`
Online bool `gorm:"not null;default:false" json:"online"`
ExpireTime time.Time `json:"expire_time"`
Enabled bool `gorm:"not null;default:true" json:"enabled"`
// TelegramID links a proxy user to one Telegram account for self-service commands.
TelegramID *int64 `gorm:"uniqueIndex" json:"telegram_id"`
}