github.com/jcarley/cli@v0.0.0-20180201210820-966d90434c30/commands/users/list.go (about) 1 package users 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/Sirupsen/logrus" 8 "github.com/daticahealth/cli/commands/invites" 9 "github.com/daticahealth/cli/models" 10 "github.com/olekukonko/tablewriter" 11 ) 12 13 func CmdList(myUsersID string, iu IUsers, ii invites.IInvites) error { 14 orgUsers, err := iu.List() 15 if err != nil { 16 return err 17 } 18 if orgUsers == nil || len(*orgUsers) == 0 { 19 logrus.Println("No users found") 20 return nil 21 } 22 orgGroups, err := ii.ListOrgGroups() 23 if err != nil { 24 return err 25 } 26 members := make(map[string][]string) 27 for _, group := range *orgGroups { 28 groupMembers := group.Members 29 for _, member := range *groupMembers { 30 members[member.Email] = append(members[member.Email], group.Name) 31 } 32 } 33 data := [][]string{{"EMAIL", "GROUP(S)"}} 34 for _, user := range *orgUsers { 35 if val, ok := members[user.Email]; ok { 36 data = append(data, []string{user.Email, strings.Join(val, ", ")}) 37 } else { 38 data = append(data, []string{user.Email, "none"}) 39 } 40 } 41 table := tablewriter.NewWriter(logrus.StandardLogger().Out) 42 table.SetBorder(false) 43 table.SetRowLine(false) 44 table.SetCenterSeparator("") 45 table.SetColumnSeparator("") 46 table.SetRowSeparator("") 47 table.AppendBulk(data) 48 table.Render() 49 return nil 50 } 51 52 func (u *SUsers) List() (*[]models.OrgUser, error) { 53 headers := u.Settings.HTTPManager.GetHeaders(u.Settings.SessionToken, u.Settings.Version, u.Settings.Pod, u.Settings.UsersID) 54 resp, statusCode, err := u.Settings.HTTPManager.Get(nil, fmt.Sprintf("%s%s/orgs/%s/users", u.Settings.AuthHost, u.Settings.AuthHostVersion, u.Settings.OrgID), headers) 55 if err != nil { 56 return nil, err 57 } 58 var users []models.OrgUser 59 err = u.Settings.HTTPManager.ConvertResp(resp, statusCode, &users) 60 if err != nil { 61 return nil, err 62 } 63 return &users, nil 64 }