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 ¶
- func GenerateInviteCode(id int64) string
- func NewContext(ctx context.Context, u *User) context.Context
- type AccountState
- type AuthMethods
- type CacheKeyGenerator
- type CacheManager
- type Device
- type DeviceOnlineRecord
- type EmailRecipientFilter
- type LoginLogFilterParams
- type User
- type UserFilterParams
- type UserStatisticsWithDate
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GenerateInviteCode ¶ added in v1.20.2
GenerateInviteCode preserves the existing user invitation-code format.
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 ¶
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 ¶
EmailRecipientFilter filters email recipients.
type LoginLogFilterParams ¶
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
FromContext returns the authenticated user the auth middleware stored in ctx, or false when the request is anonymous.
func (*User) GetCacheKeys ¶
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.