github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/hypervisor/manager/owners.go (about) 1 package manager 2 3 import ( 4 "github.com/Cloud-Foundations/Dominator/lib/srpc" 5 ) 6 7 func (m *Manager) changeOwners(ownerGroups, ownerUsers []string) error { 8 ownerGroupsMap := make(map[string]struct{}, len(ownerGroups)) 9 for _, group := range ownerGroups { 10 ownerGroupsMap[group] = struct{}{} 11 } 12 ownerUsersMap := make(map[string]struct{}, len(ownerUsers)) 13 for _, user := range ownerUsers { 14 ownerUsersMap[user] = struct{}{} 15 } 16 m.mutex.Lock() 17 defer m.mutex.Unlock() 18 m.ownerGroups = ownerGroupsMap 19 m.ownerUsers = ownerUsersMap 20 return nil 21 } 22 23 func (m *Manager) checkOwnership(authInfo *srpc.AuthInformation) bool { 24 m.mutex.Lock() 25 defer m.mutex.Unlock() 26 if authInfo.Username != "" { 27 if _, ok := m.ownerUsers[authInfo.Username]; ok { 28 return true 29 } 30 } 31 for group := range authInfo.GroupList { 32 if _, ok := m.ownerGroups[group]; ok { 33 return true 34 } 35 } 36 return false 37 }