mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-25 16:30:25 +08:00
优化用户服务整体启用和禁用
This commit is contained in:
49
internal/nodes/user_manager.go
Normal file
49
internal/nodes/user_manager.go
Normal file
@@ -0,0 +1,49 @@
|
||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
|
||||
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) {
|
||||
this.locker.RLock()
|
||||
u, ok := this.userMap[userId]
|
||||
if ok {
|
||||
isEnabled = u.ServersEnabled
|
||||
} else {
|
||||
isEnabled = true
|
||||
}
|
||||
this.locker.RUnlock()
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user