package main import ( "fmt" "os/user" ) // map groupname -> pretty name var privilegedGroups = map[string]string{ "office": "Office worker", "libcom": "Library Committee", } // IsPrivilegedUser checks to see if the current user is privileged. func IsPrivilegedUser() (bool, error) { person, err := user.Current() if err != nil { return false, fmt.Errorf("failed to get current user: %w", err) } groups, err := person.GroupIds() if err != nil { return false, fmt.Errorf("failed to get group ids: %w", err) } for _, gid := range groups { group, err := user.LookupGroupId(gid) if err != nil { // Log error continue } if _, ok := privilegedGroups[group.Name]; ok { return true, nil } } return false, nil }