Help us shape the future of Go! Take the 2026 Go Developer Survey

user

package
v1.21.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2026 License: GPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

Package user holds the identity module's account entities: the user row, its sign-in identities, devices and their online records, the filters of the account queries, and the account's cache keys and request context.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateInviteCode added in v1.20.2

func GenerateInviteCode(id int64) string

GenerateInviteCode preserves the existing user invitation-code format.

func NewContext added in v1.21.0

func NewContext(ctx context.Context, u *User) context.Context

NewContext returns ctx carrying u as the authenticated user of the request.

Types

type AccountState added in v1.19.0

type AccountState struct {
	Id     int64
	Enable *bool
	// IsAdmin is read by request authentication (FindAccountStateForAuth);
	// the cached node-side gate leaves it nil.
	IsAdmin   *bool
	UpdatedAt time.Time
	DeletedAt gorm.DeletedAt
}

AccountState is the minimal account gate used on request hot paths that do not need credentials, devices, notification settings, or auth methods.

type AuthMethods

type AuthMethods struct {
	Id             int64     `gorm:"primaryKey"`
	UserId         int64     `gorm:"index:idx_user_id;not null;comment:User ID"`
	AuthType       string    `` /* 181-byte string literal not displayed */
	AuthIdentifier string    `gorm:"type:varchar(255);uniqueIndex:idx_auth_type_identifier,priority:2;not null;comment:Auth Identifier"`
	Verified       bool      `gorm:"default:false;not null;comment:Is Verified"`
	CreatedAt      time.Time `gorm:"<-:create;comment:Creation Time"`
	UpdatedAt      time.Time `gorm:"comment:Update Time"`
}

AuthMethods is a login identity of a user. An identifier is unique within its auth type (idx_auth_type_identifier), not across types.

func (*AuthMethods) GetCacheKeys

func (a *AuthMethods) GetCacheKeys() []string

func (*AuthMethods) TableName

func (*AuthMethods) TableName() string

type CacheKeyGenerator

type CacheKeyGenerator interface {
	GetCacheKeys() []string
}

CacheKeyGenerator produces the set of cache keys that hold the model.

type CacheManager

type CacheManager interface {
	ClearCache(ctx context.Context, keys ...string) error
	ClearModelCache(ctx context.Context, models ...CacheKeyGenerator) error
}

CacheManager clears cache keys directly or via CacheKeyGenerator models.

type Device

type Device struct {
	Id         int64     `gorm:"primaryKey"`
	Ip         string    `gorm:"type:varchar(255);not null;comment:Device IP"`
	UserId     int64     `gorm:"index:idx_user_id;not null;comment:User ID"`
	UserAgent  string    `gorm:"default:null;comment:UserAgent."`
	Identifier string    `gorm:"type:varchar(255);unique;index:idx_identifier;default:'';comment:Device Identifier"`
	Online     bool      `gorm:"default:false;not null;comment:Online"`
	Enabled    bool      `gorm:"default:true;not null;comment:Enabled"`
	CreatedAt  time.Time `gorm:"<-:create;comment:Creation Time"`
	UpdatedAt  time.Time `gorm:"comment:Update Time"`
}

Device is a device bound to an account, which signs in with its identifier.

func (*Device) GetCacheKeys

func (d *Device) GetCacheKeys() []string

func (*Device) TableName

func (*Device) TableName() string

type DeviceOnlineRecord

type DeviceOnlineRecord struct {
	Id            int64     `gorm:"primaryKey"`
	UserId        int64     `gorm:"type:bigint;not null;comment:User ID"`
	Identifier    string    `gorm:"type:varchar(255);not null;comment:Device Identifier"`
	OnlineTime    time.Time `gorm:"comment:Online Time"` // The time when the device goes online
	OfflineTime   time.Time `gorm:"comment:Offline Time"`
	OnlineSeconds int64     `gorm:"comment:Offline Seconds"`
	DurationDays  int64     `gorm:"comment:Duration Days"`
	CreatedAt     time.Time `gorm:"<-:create;comment:Creation Time"`
}

DeviceOnlineRecord is the online time of one device connection.

func (DeviceOnlineRecord) TableName

func (DeviceOnlineRecord) TableName() string

type EmailRecipientFilter

type EmailRecipientFilter struct {
	Scope             int8
	RegisterStartTime int64
	RegisterEndTime   int64
}

EmailRecipientFilter filters email recipients.

type LoginLogFilterParams

type LoginLogFilterParams struct {
	IP        string
	UserId    int64
	UserAgent string
	Success   *bool
}

LoginLogFilterParams filters user login logs.

type User

type User struct {
	Id                    int64          `gorm:"primaryKey"`
	Password              string         `gorm:"type:varchar(255);not null;comment:User Password"`
	Algo                  string         `gorm:"type:varchar(20);default:'default';comment:Encryption Algorithm"`
	Salt                  string         `gorm:"type:varchar(20);default:null;comment:Password Salt"`
	Avatar                string         `gorm:"type:MEDIUMTEXT;comment:User Avatar"`
	ReferCode             string         `gorm:"type:varchar(20);default:'';comment:Referral Code"`
	RefererId             int64          `gorm:"index:idx_referer;comment:Referrer ID"`
	ReferralPercentage    uint8          `gorm:"default:0;comment:Referral"`                        // Referral Percentage
	OnlyFirstPurchase     *bool          `gorm:"default:true;not null;comment:Only First Purchase"` // Only First Purchase Referral
	Enable                *bool          `gorm:"default:true;not null;comment:Is Account Enabled"`
	IsAdmin               *bool          `gorm:"default:false;not null;comment:Is Admin"`
	EnableBalanceNotify   *bool          `gorm:"default:false;not null;comment:Enable Balance Change Notifications"`
	EnableLoginNotify     *bool          `gorm:"default:false;not null;comment:Enable Login Notifications"`
	EnableSubscribeNotify *bool          `gorm:"default:false;not null;comment:Enable Subscription Notifications"`
	EnableTradeNotify     *bool          `gorm:"default:false;not null;comment:Enable Trade Notifications"`
	AuthMethods           []AuthMethods  `gorm:"foreignKey:UserId;references:Id"`
	UserDevices           []Device       `gorm:"foreignKey:UserId;references:Id"`
	Rules                 string         `gorm:"type:TEXT;comment:User Rules"`
	CreatedAt             time.Time      `gorm:"<-:create;comment:Creation Time"`
	UpdatedAt             time.Time      `gorm:"comment:Update Time"`
	DeletedAt             gorm.DeletedAt `gorm:"index;comment:Deletion Time"`
}

User is an account row.

func FromContext added in v1.21.0

func FromContext(ctx context.Context) (*User, bool)

FromContext returns the authenticated user the auth middleware stored in ctx, or false when the request is anonymous.

func (*User) GetCacheKeys

func (u *User) GetCacheKeys() []string

func (*User) TableName

func (*User) TableName() string

type UserFilterParams

type UserFilterParams struct {
	Search             string
	UserId             *int64
	SubscribeId        *int64
	UserSubscribeId    *int64
	UserSubscribeToken string
	Order              string // Order by id, e.g., "desc"
	Unscoped           bool   // Whether to include soft-deleted records
}

UserFilterParams filters users in paginated queries.

type UserStatisticsWithDate

type UserStatisticsWithDate struct {
	Date              string
	Register          int64
	NewOrderUsers     int64
	RenewalOrderUsers int64
}

UserStatisticsWithDate holds aggregated user statistics per day/month.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL