GetUsersByMember gets user messages by member. The member should be in users/{email}, serviceAccounts/{email}, workloadIdentities/{email}, or groups/{email} format.
(ctx context.Context, stores *store.Store, workspace string, member string)
| 88 | // GetUsersByMember gets user messages by member. |
| 89 | // The member should be in users/{email}, serviceAccounts/{email}, workloadIdentities/{email}, or groups/{email} format. |
| 90 | func GetUsersByMember(ctx context.Context, stores *store.Store, workspace string, member string) []*store.UserMessage { |
| 91 | var users []*store.UserMessage |
| 92 | if strings.HasPrefix(member, common.UserNamePrefix) { |
| 93 | user := getUserByIdentifier(ctx, stores, member, common.UserNamePrefix) |
| 94 | if user != nil { |
| 95 | users = append(users, user) |
| 96 | } |
| 97 | } else if strings.HasPrefix(member, common.ServiceAccountNamePrefix) { |
| 98 | user := getUserByIdentifier(ctx, stores, member, common.ServiceAccountNamePrefix) |
| 99 | if user != nil { |
| 100 | users = append(users, user) |
| 101 | } |
| 102 | } else if strings.HasPrefix(member, common.WorkloadIdentityNamePrefix) { |
| 103 | user := getUserByIdentifier(ctx, stores, member, common.WorkloadIdentityNamePrefix) |
| 104 | if user != nil { |
| 105 | users = append(users, user) |
| 106 | } |
| 107 | } else if strings.HasPrefix(member, common.GroupPrefix) { |
| 108 | group, err := stores.GetGroupByName(ctx, workspace, member) |
| 109 | if err != nil { |
| 110 | slog.Error("failed to get group", slog.String("group", member), log.BBError(err)) |
| 111 | return users |
| 112 | } |
| 113 | if group == nil { |
| 114 | slog.Error("cannot found group", slog.String("group", member)) |
| 115 | return users |
| 116 | } |
| 117 | for _, member := range group.Payload.Members { |
| 118 | user := getUserByIdentifier(ctx, stores, member.Member, common.UserNamePrefix) |
| 119 | if user != nil { |
| 120 | users = append(users, user) |
| 121 | } |
| 122 | } |
| 123 | } |
| 124 | return users |
| 125 | } |
| 126 | |
| 127 | // getUserByIdentifier gets user message by identifier. |
| 128 | // The identifier should be in {prefix}{email} format where prefix is one of: |
no test coverage detected