package lib

import (
	"context"
	resourcemanager "google.golang.org/api/cloudresourcemanager/v3"
	"strings"
)

// ListAllUsers lists all users in the project.
func ListAllUsers(ctx context.Context, service *resourcemanager.Service, projectID string) ([]string, error) {
	resource := "projects/" + projectID
	policy, err := service.Projects.GetIamPolicy(resource, &resourcemanager.GetIamPolicyRequest{}).Do()
	if err != nil {
		return nil, err
	}

	userSet := make(map[string]struct{})
	for _, binding := range policy.Bindings {
		for _, member := range binding.Members {
			if strings.HasPrefix(member, "user:") {
				email := strings.TrimPrefix(member, "user:")
				userSet[email] = struct{}{}
			}
		}
	}

	var users []string
	for user := range userSet {
		users = append(users, user)
	}
	return users, nil
}
