mirror of
https://github.com/luscis/openlan.git
synced 2025-09-28 05:12:15 +08:00
65 lines
1.4 KiB
Go
Executable File
65 lines
1.4 KiB
Go
Executable File
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/luscis/openlan/pkg/libol"
|
|
)
|
|
|
|
type User struct {
|
|
Alias string `json:"alias"`
|
|
Name string `json:"name"`
|
|
Network string `json:"network"`
|
|
Password string `json:"password"`
|
|
UUID string `json:"uuid"`
|
|
System string `json:"system"`
|
|
Role string `json:"type"` // admin , guest or ldap
|
|
Last libol.SocketClient `json:"last"` // lastly accessed by this.
|
|
Lease time.Time `json:"leastTime"`
|
|
UpdateAt int64
|
|
}
|
|
|
|
func NewUser(name, network, password string) *User {
|
|
return &User{
|
|
Name: name,
|
|
Password: password,
|
|
Network: network,
|
|
System: runtime.GOOS,
|
|
Role: "guest",
|
|
}
|
|
}
|
|
|
|
func (u *User) String() string {
|
|
return fmt.Sprintf("%s, %s, %s", u.Id(), u.Password, u.Role)
|
|
}
|
|
|
|
func (u *User) Update() {
|
|
// to support lower version
|
|
if u.Network == "" {
|
|
if strings.Contains(u.Name, "@") {
|
|
u.Network = strings.SplitN(u.Name, "@", 2)[1]
|
|
}
|
|
}
|
|
if u.Network == "" {
|
|
u.Network = "default"
|
|
}
|
|
if strings.Contains(u.Name, "@") {
|
|
u.Name = strings.SplitN(u.Name, "@", 2)[0]
|
|
}
|
|
u.Alias = strings.ToLower(u.Alias)
|
|
if u.UUID == "" {
|
|
u.UUID = u.Alias
|
|
}
|
|
u.UpdateAt = time.Now().Unix()
|
|
}
|
|
|
|
func (u *User) Id() string {
|
|
if u.Network == "" {
|
|
return u.Name
|
|
}
|
|
return u.Name + "@" + u.Network
|
|
}
|