2024-07-27 15:42:50 +08:00
|
|
|
// Copyright 2022 GoEdge goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
|
2022-10-23 16:21:11 +08:00
|
|
|
|
|
|
|
|
package nodes
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"sync"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var SharedUserManager = NewUserManager()
|
|
|
|
|
|
|
|
|
|
type User struct {
|
|
|
|
|
ServersEnabled bool
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UserManager struct {
|
|
|
|
|
userMap map[int64]*User // id => *User
|
|
|
|
|
|
|
|
|
|
locker sync.RWMutex
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewUserManager() *UserManager {
|
|
|
|
|
return &UserManager{
|
|
|
|
|
userMap: map[int64]*User{},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *UserManager) UpdateUserServersIsEnabled(userId int64, isEnabled bool) {
|
|
|
|
|
this.locker.Lock()
|
|
|
|
|
u, ok := this.userMap[userId]
|
|
|
|
|
if ok {
|
|
|
|
|
u.ServersEnabled = isEnabled
|
|
|
|
|
} else {
|
|
|
|
|
u = &User{ServersEnabled: isEnabled}
|
|
|
|
|
this.userMap[userId] = u
|
|
|
|
|
}
|
|
|
|
|
this.locker.Unlock()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (this *UserManager) CheckUserServersIsEnabled(userId int64) (isEnabled bool) {
|
2022-11-15 10:06:57 +08:00
|
|
|
if userId <= 0 {
|
|
|
|
|
return true
|
|
|
|
|
}
|
2024-07-27 15:42:50 +08:00
|
|
|
|
2022-10-23 16:21:11 +08:00
|
|
|
this.locker.RLock()
|
|
|
|
|
u, ok := this.userMap[userId]
|
|
|
|
|
if ok {
|
|
|
|
|
isEnabled = u.ServersEnabled
|
|
|
|
|
} else {
|
|
|
|
|
isEnabled = true
|
|
|
|
|
}
|
|
|
|
|
this.locker.RUnlock()
|
|
|
|
|
return
|
|
|
|
|
}
|