mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-04-30 01:08:33 +00:00
v1.0.0
This commit is contained in:
parent
47d23e9972
commit
c7f7c08ead
711 changed files with 82154 additions and 2 deletions
39
common/protocol/user.go
Normal file
39
common/protocol/user.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
package protocol
|
||||
|
||||
func (u *User) GetTypedAccount() (Account, error) {
|
||||
if u.GetAccount() == nil {
|
||||
return nil, newError("Account missing").AtWarning()
|
||||
}
|
||||
|
||||
rawAccount, err := u.Account.GetInstance()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if asAccount, ok := rawAccount.(AsAccount); ok {
|
||||
return asAccount.AsAccount()
|
||||
}
|
||||
if account, ok := rawAccount.(Account); ok {
|
||||
return account, nil
|
||||
}
|
||||
return nil, newError("Unknown account type: ", u.Account.Type)
|
||||
}
|
||||
|
||||
func (u *User) ToMemoryUser() (*MemoryUser, error) {
|
||||
account, err := u.GetTypedAccount()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &MemoryUser{
|
||||
Account: account,
|
||||
Email: u.Email,
|
||||
Level: u.Level,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// MemoryUser is a parsed form of User, to reduce number of parsing of Account proto.
|
||||
type MemoryUser struct {
|
||||
// Account is the parsed account of the protocol.
|
||||
Account Account
|
||||
Email string
|
||||
Level uint32
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue