MCPcopy Index your code
hub / github.com/coder/coder / fetchUsersAndGroups

Function fetchUsersAndGroups

cli/sharing.go:340–422  ·  view source on GitHub ↗
(ctx context.Context, params fetchUsersAndGroupsParams)

Source from the content-addressed store, hash-verified

338}
339
340func fetchUsersAndGroups(ctx context.Context, params fetchUsersAndGroupsParams) (userRoles map[string]codersdk.WorkspaceRole, groupRoles map[string]codersdk.WorkspaceRole, err error) {
341 var (
342 client = params.Client
343 orgID = params.OrgID
344 orgName = params.OrgName
345 users = params.Users
346 groups = params.Groups
347 defaultRole = params.DefaultRole
348 )
349
350 userRoles = make(map[string]codersdk.WorkspaceRole, len(users))
351 if len(users) > 0 {
352 orgMembers, err := client.OrganizationMembers(ctx, orgID)
353 if err != nil {
354 return nil, nil, err
355 }
356
357 for _, user := range users {
358 username := user[0]
359 role := user[1]
360 if role == "" {
361 role = string(defaultRole)
362 }
363
364 userID := ""
365 for _, member := range orgMembers {
366 if member.Username == username {
367 userID = member.UserID.String()
368 break
369 }
370 }
371 if userID == "" {
372 return nil, nil, xerrors.Errorf("could not find user %s in the organization %s", username, orgName)
373 }
374
375 workspaceRole, err := stringToWorkspaceRole(role)
376 if err != nil {
377 return nil, nil, err
378 }
379
380 userRoles[userID] = workspaceRole
381 }
382 }
383
384 groupRoles = make(map[string]codersdk.WorkspaceRole)
385 if len(groups) > 0 {
386 orgGroups, err := client.Groups(ctx, codersdk.GroupArguments{
387 Organization: orgID.String(),
388 })
389 if err != nil {
390 return nil, nil, err
391 }
392
393 for _, group := range groups {
394 groupName := group[0]
395 role := group[1]
396 if role == "" {
397 role = string(defaultRole)

Callers 2

shareWorkspaceMethod · 0.85
unshareWorkspaceMethod · 0.85

Calls 5

stringToWorkspaceRoleFunction · 0.85
OrganizationMembersMethod · 0.65
GroupsMethod · 0.65
StringMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected