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  }