mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
accounts: refresh user list by listening '/etc/shadow'
tower:https://tower.im/projects/8162ac3745044ca29f9f3d21beaeb93d/todos/8e31907514d64d849a65126ab24f5928/ Change-Id: I3ab32448fa5f1b05204e4ecd0cc06f33eb41db48
This commit is contained in:
parent
bb1c3dc0ec
commit
60c311ea6c
@ -29,7 +29,6 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
userFilePasswd = "/etc/passwd"
|
||||
userFileGroup = "/etc/group"
|
||||
userFileShadow = "/etc/shadow"
|
||||
|
||||
@ -43,7 +42,7 @@ const (
|
||||
)
|
||||
|
||||
func (m *Manager) getWatchFiles() []string {
|
||||
return []string{userFilePasswd, userFileGroup, userFileShadow}
|
||||
return []string{userFileGroup, userFileShadow}
|
||||
}
|
||||
|
||||
func (m *Manager) handleFileChanged(ev *fsnotify.FileEvent) {
|
||||
@ -52,8 +51,6 @@ func (m *Manager) handleFileChanged(ev *fsnotify.FileEvent) {
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.Contains(ev.Name, userFilePasswd):
|
||||
m.handleUserFileChanged(ev, m.handleFilePasswdChanged)
|
||||
case strings.Contains(ev.Name, userFileGroup):
|
||||
m.handleUserFileChanged(ev, m.handleFileGroupChanged)
|
||||
case strings.Contains(ev.Name, userFileShadow):
|
||||
@ -71,17 +68,6 @@ func (m *Manager) handleUserFileChanged(ev *fsnotify.FileEvent, handler func())
|
||||
handler()
|
||||
}
|
||||
|
||||
func (m *Manager) handleFilePasswdChanged() {
|
||||
newList := getUserPaths()
|
||||
ret, status := compareUserList(m.UserList, newList)
|
||||
switch status {
|
||||
case userListAdded:
|
||||
m.handleUserAdded(ret)
|
||||
case userListDeleted:
|
||||
m.handleUserDeleted(ret)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) handleFileGroupChanged() {
|
||||
m.mapLocker.Lock()
|
||||
defer m.mapLocker.Unlock()
|
||||
@ -91,6 +77,9 @@ func (m *Manager) handleFileGroupChanged() {
|
||||
}
|
||||
|
||||
func (m *Manager) handleFileShadowChanged() {
|
||||
m.refreshUserList()
|
||||
|
||||
//Update the property 'Locked'
|
||||
m.mapLocker.Lock()
|
||||
defer m.mapLocker.Unlock()
|
||||
for _, u := range m.usersMap {
|
||||
@ -98,6 +87,17 @@ func (m *Manager) handleFileShadowChanged() {
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) refreshUserList() {
|
||||
newList := getUserPaths()
|
||||
ret, status := compareUserList(m.UserList, newList)
|
||||
switch status {
|
||||
case userListAdded:
|
||||
m.handleUserAdded(ret)
|
||||
case userListDeleted:
|
||||
m.handleUserDeleted(ret)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) handleUserAdded(list []string) {
|
||||
var paths = m.UserList
|
||||
for _, p := range list {
|
||||
|
Loading…
x
Reference in New Issue
Block a user