diff --git a/.bldr.toml b/.bldr.toml index 70741f5ed97..ff58aa8b694 100644 --- a/.bldr.toml +++ b/.bldr.toml @@ -692,7 +692,6 @@ paths = [ "components/applications-service/*", "components/authz-service/*", "components/automate-deployment/*", - "components/automate-gateway/api/auth/*", "components/automate-gateway/api/authz/*", "components/automate-gateway/api/compliance/*", "components/automate-gateway/api/iam/*", diff --git a/components/automate-cli/cmd/chef-automate/dev.go b/components/automate-cli/cmd/chef-automate/dev.go index f55faf34b4b..29bfe4e9a67 100644 --- a/components/automate-cli/cmd/chef-automate/dev.go +++ b/components/automate-cli/cmd/chef-automate/dev.go @@ -994,23 +994,23 @@ func runCreateIAMDevUsersCmd(*cobra.Command, []string) error { return err } for username, data := range map[string]struct { - displayName, password, team string + displayName, password, teamID string }{ "viewer": {"Viewer User", "chefautomate", "viewers"}, "editor": {"Editor User", "chefautomate", "editors"}, } { userID, _, err := adminmgmt.CreateUserOrUpdatePassword(ctx, - apiClient, username, data.displayName, data.password, false /* dry run */) + apiClient, username, data.displayName, data.password, false) if err != nil { return err } // Note: the teams SHOULD exist. But since you never know what happens in a // long running acceptance env, we'll better ensure them: - teamID, _, err := adminmgmt.EnsureTeam(ctx, data.team, data.team /* description */, apiClient, false /* dry run */) + _, err = adminmgmt.EnsureTeam(ctx, data.teamID, data.teamID, apiClient, false) if err != nil { return err } - _, err = adminmgmt.AddUserToTeam(ctx, apiClient, teamID, userID, false /* dry run */) + _, err = adminmgmt.AddUserToTeam(ctx, apiClient, data.teamID, userID, false) if err != nil { return err } diff --git a/components/automate-cli/cmd/chef-automate/iam.go b/components/automate-cli/cmd/chef-automate/iam.go index eeddb071557..f46478b1282 100644 --- a/components/automate-cli/cmd/chef-automate/iam.go +++ b/components/automate-cli/cmd/chef-automate/iam.go @@ -9,7 +9,6 @@ import ( "github.com/golang/protobuf/ptypes/wrappers" "github.com/spf13/cobra" - authz_constants "github.com/chef/automate/components/authz-service/constants" v2_constants "github.com/chef/automate/components/authz-service/constants/v2" "github.com/chef/automate/components/automate-cli/pkg/adminmgmt" "github.com/chef/automate/components/automate-cli/pkg/client/apiclient" @@ -18,6 +17,8 @@ import ( iam_req "github.com/chef/automate/components/automate-gateway/api/iam/v2/request" ) +const adminsID = "admins" + var iamCmdFlags = struct { dryRun bool adminToken bool @@ -157,7 +158,7 @@ func runRestoreDefaultAdminAccessAdminCmd(cmd *cobra.Command, args []string) err } // restore admin user and team if needed - userID, adminUserFound, err := adminmgmt.CreateAdminUserOrUpdatePassword(ctx, + membershipID, adminUserFound, err := adminmgmt.CreateAdminUserOrUpdatePassword(ctx, apiClient, newAdminPassword, iamCmdFlags.dryRun) if err != nil { return err @@ -169,8 +170,7 @@ func runRestoreDefaultAdminAccessAdminCmd(cmd *cobra.Command, args []string) err writer.Success("Created new admin user with specified password") } - adminsTeamID, adminsTeamFound, err := adminmgmt.CreateAdminTeamIfMissing(ctx, - apiClient, iamCmdFlags.dryRun) + adminsTeamFound, err := adminmgmt.CreateAdminTeamIfMissing(ctx, apiClient, iamCmdFlags.dryRun) if err != nil { return err } @@ -183,11 +183,11 @@ func runRestoreDefaultAdminAccessAdminCmd(cmd *cobra.Command, args []string) err // In dry-run mode, we might be missing some IDs that would have been created. // We'll only hit this condition in dry-run mode. - if iamCmdFlags.dryRun && (userID == "" || adminsTeamID == "") { + if iamCmdFlags.dryRun && (membershipID == "" || !adminsTeamFound) { writer.Success("Added admin user to admins team") } else { // non-dry-run mode or dry-run mode where user and team already existed. userAdded, err := adminmgmt.AddAdminUserToTeam(ctx, - apiClient, adminsTeamID, userID, iamCmdFlags.dryRun) + apiClient, adminsID, membershipID, iamCmdFlags.dryRun) if err != nil { return err } @@ -199,52 +199,18 @@ func runRestoreDefaultAdminAccessAdminCmd(cmd *cobra.Command, args []string) err } } - // grant access to admins team if needed - resp, err := apiClient.PoliciesClient().GetPolicyVersion(ctx, &iam_req.GetPolicyVersionReq{}) + foundAdminsTeaminV2AdminPolicy, err := adminmgmt.UpdateAdminsPolicyIfNeeded(ctx, + apiClient, iamCmdFlags.dryRun) if err != nil { - return status.Wrap(err, status.APIError, "Failed to verify IAM version") + return err } - writer.Titlef("Checking IAM %s policies for admin policy with admins team.\n", display(resp.Version)) - - switch resp.Version.Major { - case iam_common.Version_V1: - foundV1AdminPolicy, createdNewV1Policy, err := adminmgmt.UpdateV1AdminsPolicyIfNeeded(ctx, - apiClient, iamCmdFlags.dryRun) - if err != nil { - return err - } - - if foundV1AdminPolicy { - writer.Skipped("Found admin policy that contains the admins team") - } else { - // Note: (tc) This should never happen currently since we currently don't support - // editing policies but adding for future-proofing against the functionality. - // Note: (sr) PurgeSubjectFromPolicies can alter policies -- when a user or a - // team is removed; so, this could be more realistic than we think. - writer.Successf("Found default admins team policy but it did not contain "+ - "the admins team subject (%s). Added admins team to default admin policy.", - authz_constants.LocalAdminsTeamSubject) - } - if createdNewV1Policy { - writer.Success("Created new admins policy") - } - case iam_common.Version_V2: - foundAdminsTeaminV2AdminPolicy, err := adminmgmt.UpdateV2AdminsPolicyIfNeeded(ctx, - apiClient, iamCmdFlags.dryRun) - if err != nil { - return err - } - - if !foundAdminsTeaminV2AdminPolicy { - writer.Success("Added local team: admins to Chef-managed policy: Admin") - } - - writer.Skipped("Found local team: admins in Chef-managed policy: Admin") - default: - // do nothing + if !foundAdminsTeaminV2AdminPolicy { + writer.Success("Added local 'admins' team to Chef-managed 'Administrator' policy") } + writer.Skipped("Found local 'admins' team in Chef-managed 'Administrator' policy") + if err := apiClient.CloseConnection(); err != nil { return status.Wrap(err, status.APIUnreachableError, "Failed to close connection to the API") } diff --git a/components/automate-cli/pkg/adminmgmt/adminmgmt.go b/components/automate-cli/pkg/adminmgmt/adminmgmt.go index a778392a08e..f6369418e4a 100644 --- a/components/automate-cli/pkg/adminmgmt/adminmgmt.go +++ b/components/automate-cli/pkg/adminmgmt/adminmgmt.go @@ -8,16 +8,10 @@ import ( grpc_status "google.golang.org/grpc/status" authz_constants "github.com/chef/automate/components/authz-service/constants" - authz_constants_v1 "github.com/chef/automate/components/authz-service/constants/v1" authz_constants_v2 "github.com/chef/automate/components/authz-service/constants/v2" "github.com/chef/automate/components/automate-cli/pkg/client" "github.com/chef/automate/components/automate-cli/pkg/status" - teams "github.com/chef/automate/components/automate-gateway/api/auth/teams" - teams_req "github.com/chef/automate/components/automate-gateway/api/auth/teams/request" - users_req "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - "github.com/chef/automate/components/automate-gateway/api/authz" - authz_req "github.com/chef/automate/components/automate-gateway/api/authz/request" - authz_v2_req "github.com/chef/automate/components/automate-gateway/api/iam/v2/request" + iam_req "github.com/chef/automate/components/automate-gateway/api/iam/v2/request" "github.com/chef/automate/lib/stringutils" ) @@ -35,11 +29,11 @@ func CreateAdminUserOrUpdatePassword(ctx context.Context, func CreateUserOrUpdatePassword(ctx context.Context, apiClient client.APIClient, username, displayName, newPassword string, dryRun bool) (string, bool, error) { - var userID string + var membershipID string var found bool - getUserResp, err := apiClient.UsersClient().GetUserByUsername(ctx, &users_req.Username{ - Username: username, + getUserResp, err := apiClient.UsersClient().GetUser(ctx, &iam_req.GetUserReq{ + Id: username, }) s := grpc_status.Convert(err) @@ -48,26 +42,25 @@ func CreateUserOrUpdatePassword(ctx context.Context, found = false if !dryRun { - createUserResp, err := apiClient.UsersClient().CreateUser(ctx, &users_req.CreateUser{ + createUserResp, err := apiClient.UsersClient().CreateUser(ctx, &iam_req.CreateUserReq{ Name: displayName, - Username: username, + Id: username, Password: newPassword, }) if err != nil { return "", false, wrapUnexpectedError(err, "Failed to create the user") } - userID = createUserResp.Id + membershipID = createUserResp.User.MembershipId } case codes.OK: // user found, update password - userID = getUserResp.Id + membershipID = getUserResp.User.MembershipId found = true if !dryRun { - _, err = apiClient.UsersClient().UpdateUser(ctx, &users_req.UpdateUser{ - Id: userID, + _, err = apiClient.UsersClient().UpdateUser(ctx, &iam_req.UpdateUserReq{ + Id: username, Name: displayName, - Username: username, Password: newPassword, }) if err != nil { @@ -80,40 +73,39 @@ func CreateUserOrUpdatePassword(ctx context.Context, return "", false, wrapUnexpectedError(err, "Failed to check if user exists") } - return userID, found, nil + return membershipID, found, nil } // CreateAdminTeamIfMissing creates the admins team if it is missing. -// It returns the team ID in either case and a boolean for if it was -// found or created. +// It returns a boolean for if it was found or created. func CreateAdminTeamIfMissing(ctx context.Context, - apiClient client.APIClient, dryRun bool) (string, bool, error) { + apiClient client.APIClient, dryRun bool) (bool, error) { return EnsureTeam(ctx, "admins", "admins", apiClient, dryRun) } func AddAdminUserToTeam(ctx context.Context, - apiClient client.APIClient, adminTeamID, adminUserID string, dryRun bool) (bool, error) { - return AddUserToTeam(ctx, apiClient, adminTeamID, adminUserID, dryRun) + apiClient client.APIClient, adminTeamID, adminMembershipID string, dryRun bool) (bool, error) { + return AddUserToTeam(ctx, apiClient, adminTeamID, adminMembershipID, dryRun) } // AddUserToTeam adds the user to a team by its ID, unless they are already in // the team. It returns a boolean representing whether or not the user needed to // be added. func AddUserToTeam(ctx context.Context, - apiClient client.APIClient, teamID, userID string, dryRun bool) (bool, error) { + apiClient client.APIClient, teamID, membershipID string, dryRun bool) (bool, error) { - getUsersResp, err := apiClient.TeamsClient().GetUsers(ctx, &teams_req.GetUsersReq{ + getUsersResp, err := apiClient.TeamsClient().GetTeamMembership(ctx, &iam_req.GetTeamMembershipReq{ Id: teamID, }) if err != nil { return false, wrapUnexpectedError(err, "Failed to check team membership") } - addUser := !stringutils.SliceContains(getUsersResp.UserIds, userID) + addUser := !stringutils.SliceContains(getUsersResp.UserIds, membershipID) if addUser && !dryRun { - _, err := apiClient.TeamsClient().AddUsers(ctx, &teams_req.AddUsersReq{ + _, err := apiClient.TeamsClient().AddTeamMembers(ctx, &iam_req.AddTeamMembersReq{ Id: teamID, - UserIds: []string{userID}, + UserIds: []string{membershipID}, }) if err != nil { return false, wrapUnexpectedError(err, "Failed to add user to team") @@ -123,54 +115,11 @@ func AddUserToTeam(ctx context.Context, return addUser, nil } -// UpdateV1AdminsPolicyIfNeeded either creates a new admins policy if one doesn't -// exist anymore or creates a new admin policy with the admins team as a subject -// if the admins team is not already a subject. -// It returns two booleans: one representing if the original policy was found -// and the other representing if a new policy was created. -func UpdateV1AdminsPolicyIfNeeded(ctx context.Context, - apiClient client.APIClient, dryRun bool) (bool, bool, error) { - - var foundOriginalTeamsPolicy, - foundTeamInOriginalPolicy, - createdNewPolicy bool - - policySubjects, foundOriginalTeamsPolicy, err := getOriginalTeamsPolicySubjects(ctx, apiClient.AuthzClient()) - if err != nil { - return false, false, err - } - - if foundOriginalTeamsPolicy { - for _, subject := range policySubjects { - if subject == authz_constants.LocalAdminsTeamSubject { - foundTeamInOriginalPolicy = true - break - } - } - } - - if !foundOriginalTeamsPolicy || !foundTeamInOriginalPolicy { - createdNewPolicy = true - if !dryRun { - _, err := apiClient.AuthzClient().CreatePolicy(ctx, &authz_req.CreatePolicyReq{ - Action: "*", - Resource: "*", - Subjects: []string{authz_constants.LocalAdminsTeamSubject}, - }) - if err != nil { - return false, false, wrapUnexpectedError(err, "Failed to create new admins policy") - } - } - } - - return foundOriginalTeamsPolicy, createdNewPolicy, nil -} - -// UpdateV2AdminsPolicyIfNeeded fetches the chef-managed Admin policy's members +// UpdateAdminsPolicyIfNeeded fetches the chef-managed Admin policy's members // and adds the admins team if it's missing from that list -func UpdateV2AdminsPolicyIfNeeded(ctx context.Context, +func UpdateAdminsPolicyIfNeeded(ctx context.Context, apiClient client.APIClient, dryRun bool) (bool, error) { - resp, err := apiClient.PoliciesClient().ListPolicyMembers(ctx, &authz_v2_req.ListPolicyMembersReq{ + resp, err := apiClient.PoliciesClient().ListPolicyMembers(ctx, &iam_req.ListPolicyMembersReq{ Id: authz_constants_v2.AdminPolicyID, }) if err != nil { @@ -179,7 +128,7 @@ func UpdateV2AdminsPolicyIfNeeded(ctx context.Context, found := stringutils.SliceContains(resp.Members, authz_constants.LocalAdminsTeamSubject) if !dryRun && !found { - _, err = apiClient.PoliciesClient().AddPolicyMembers(ctx, &authz_v2_req.AddPolicyMembersReq{ + _, err = apiClient.PoliciesClient().AddPolicyMembers(ctx, &iam_req.AddPolicyMembersReq{ Id: authz_constants_v2.AdminPolicyID, Members: []string{authz_constants.LocalAdminsTeamSubject}, }) @@ -192,68 +141,38 @@ func UpdateV2AdminsPolicyIfNeeded(ctx context.Context, return found, nil } -// EnsureTeam creates the desired team if it is missing, and returns the team's -// ID, together with a boolean indicating if the team was created by this call +// EnsureTeam creates the desired team if it is missing, +// together with a boolean indicating if the team was created by this call func EnsureTeam(ctx context.Context, - id, description string, + id, name string, apiClient client.APIClient, - dryRun bool) (string, bool, error) { + dryRun bool) (bool, error) { - teamID, found, err := getTeamIDByName(ctx, apiClient.TeamsClient(), id) + found := true + _, err := apiClient.TeamsClient().GetTeam(ctx, &iam_req.GetTeamReq{ + Id: id, + }) if err != nil { - return "", false, wrapUnexpectedError(err, "Failed to retrieve team %q", id) + if grpc_status.Convert(err).Code() == codes.NotFound { + found = false + } else { + return false, wrapUnexpectedError(err, "Failed to retrieve team %q", id) + } } if !found && !dryRun { - createTeamsResp, err := apiClient.TeamsClient().CreateTeam(ctx, &teams_req.CreateTeamReq{ - Name: id, - Description: description, + _, err := apiClient.TeamsClient().CreateTeam(ctx, &iam_req.CreateTeamReq{ + Id: id, + Name: name, }) if err != nil { - return "", false, wrapUnexpectedError(err, "Failed to create team %q", id) + return false, wrapUnexpectedError(err, "Failed to create team %q", id) } - - teamID = createTeamsResp.Team.Id } - return teamID, found, nil + return found, nil } func wrapUnexpectedError(err error, wrap string, args ...interface{}) error { return status.Wrapf(err, status.APIError, wrap, args...) } - -func getTeamIDByName(ctx context.Context, tc teams.TeamsClient, name string) (string, bool, error) { - var id string - var found bool - - getTeamsResp, err := tc.GetTeams(ctx, &teams_req.GetTeamsReq{}) - if err != nil { - return "", false, wrapUnexpectedError(err, "Failed to retrieve admins team") - } - - for _, team := range getTeamsResp.Teams { - if team.Name == name { - id = team.Id - found = true - break - } - } - - return id, found, nil -} - -func getOriginalTeamsPolicySubjects(ctx context.Context, - ac authz.AuthorizationClient) ([]string, bool, error) { - authzListResp, err := ac.ListPolicies(ctx, &authz_req.ListPoliciesReq{}) - if err != nil { - return nil, false, wrapUnexpectedError(err, "Failed to retrieve policies") - } - - for _, policy := range authzListResp.Policies { - if policy.Id == authz_constants_v1.AdminPolicyID { - return policy.Subjects, true, nil - } - } - return nil, false, nil -} diff --git a/components/automate-cli/pkg/adminmgmt/adminmgmt_test.go b/components/automate-cli/pkg/adminmgmt/adminmgmt_test.go index f07192b98d3..6ccdc8f101b 100644 --- a/components/automate-cli/pkg/adminmgmt/adminmgmt_test.go +++ b/components/automate-cli/pkg/adminmgmt/adminmgmt_test.go @@ -11,17 +11,13 @@ import ( "google.golang.org/grpc/status" authz_constants "github.com/chef/automate/components/authz-service/constants" - authz_constants_v1 "github.com/chef/automate/components/authz-service/constants/v1" "github.com/chef/automate/components/automate-cli/pkg/adminmgmt" "github.com/chef/automate/components/automate-cli/pkg/client/mock" - teams_req "github.com/chef/automate/components/automate-gateway/api/auth/teams/request" - teams_resp "github.com/chef/automate/components/automate-gateway/api/auth/teams/response" - users_req "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - users_resp "github.com/chef/automate/components/automate-gateway/api/auth/users/response" authz_req "github.com/chef/automate/components/automate-gateway/api/authz/request" authz_resp "github.com/chef/automate/components/automate-gateway/api/authz/response" - policies_req "github.com/chef/automate/components/automate-gateway/api/iam/v2/request" - policies_resp "github.com/chef/automate/components/automate-gateway/api/iam/v2/response" + iam_common "github.com/chef/automate/components/automate-gateway/api/iam/v2/common" + iam_req "github.com/chef/automate/components/automate-gateway/api/iam/v2/request" + iam_resp "github.com/chef/automate/components/automate-gateway/api/iam/v2/response" ) func TestCreateAdminUserOrUpdatePassword(t *testing.T) { @@ -32,18 +28,18 @@ func TestCreateAdminUserOrUpdatePassword(t *testing.T) { pw := "newPassword" - t.Run("when GetUserByUsername fails with an unexpected error then raise that error", func(t *testing.T) { - serverMocks.UsersMock.GetUserByUsernameFunc = getUserByUsernameError(codes.Internal) + t.Run("when GetUser fails with an unexpected error then raise that error", func(t *testing.T) { + serverMocks.UsersMock.GetUserFunc = getUserError(codes.Internal) _, _, err := adminmgmt.CreateAdminUserOrUpdatePassword(ctx, apiClient, pw, false) require.Error(t, err) }) t.Run("when the admin doesn't exist but creating it throws an error then return the error", func(t *testing.T) { - serverMocks.UsersMock.GetUserByUsernameFunc = getUserByUsernameError(codes.NotFound) + serverMocks.UsersMock.GetUserFunc = getUserError(codes.NotFound) serverMocks.UsersMock.CreateUserFunc = func( - _ context.Context, req *users_req.CreateUser) (*users_resp.User, error) { - if "Local Administrator" != req.Name || "admin" != req.Username || pw != req.Password { - return &users_resp.User{}, nil // this would be unexpected, we want this to return an error + _ context.Context, req *iam_req.CreateUserReq) (*iam_resp.CreateUserResp, error) { + if "Local Administrator" != req.Name || "admin" != req.Id || pw != req.Password { + return &iam_resp.CreateUserResp{}, nil // this would be unexpected, we want this to return an error } return nil, status.Error(codes.Internal, "unexpected error") } @@ -53,25 +49,27 @@ func TestCreateAdminUserOrUpdatePassword(t *testing.T) { }) t.Run("when the admin doesn't exist", func(t *testing.T) { - id := "mocked_id" - serverMocks.UsersMock.GetUserByUsernameFunc = getUserByUsernameError(codes.NotFound) + membershipID := "mocked_id" + serverMocks.UsersMock.GetUserFunc = getUserError(codes.NotFound) serverMocks.UsersMock.CreateUserFunc = func( - _ context.Context, req *users_req.CreateUser) (*users_resp.User, error) { + _ context.Context, req *iam_req.CreateUserReq) (*iam_resp.CreateUserResp, error) { - if "Local Administrator" != req.Name || "admin" != req.Username || pw != req.Password { + if "Local Administrator" != req.Name || "admin" != req.Id || pw != req.Password { return nil, errors.New("unexpected arguments") } - return &users_resp.User{ - Id: id, - Name: req.Name, - Username: req.Username, + return &iam_resp.CreateUserResp{ + User: &iam_common.User{ + Id: "wrong_id", + Name: req.Name, + MembershipId: membershipID, + }, }, nil } - t.Run("it returns the id and found=false", func(t *testing.T) { + t.Run("it returns the membership id and found=false", func(t *testing.T) { returnID, returnFound, err := adminmgmt.CreateAdminUserOrUpdatePassword(ctx, apiClient, pw, false) require.NoError(t, err) - assert.Equal(t, id, returnID) + assert.Equal(t, membershipID, returnID) assert.False(t, returnFound) }) @@ -85,45 +83,49 @@ func TestCreateAdminUserOrUpdatePassword(t *testing.T) { }) t.Run("when the admin is found", func(t *testing.T) { - id := "mocked_id" - serverMocks.UsersMock.GetUserByUsernameFunc = func( - _ context.Context, req *users_req.Username) (*users_resp.User, error) { + membershipID := "mocked_id" + serverMocks.UsersMock.GetUserFunc = func( + _ context.Context, req *iam_req.GetUserReq) (*iam_resp.GetUserResp, error) { - if "admin" != req.Username { + if "admin" != req.Id { return nil, errors.New("unexpected arguments") } - return &users_resp.User{ - Id: id, - Name: "Some out of date name", - Username: "admin", + return &iam_resp.GetUserResp{ + User: &iam_common.User{ + Id: "admin", + Name: "Some out of date name", + MembershipId: membershipID, + }, }, nil } serverMocks.UsersMock.UpdateUserFunc = func( - _ context.Context, req *users_req.UpdateUser) (*users_resp.User, error) { + _ context.Context, req *iam_req.UpdateUserReq) (*iam_resp.UpdateUserResp, error) { - if "Local Administrator" != req.Name || "admin" != req.Username || pw != req.Password { + if "Local Administrator" != req.Name || "admin" != req.Id || pw != req.Password { return nil, errors.New("unexpected arguments") } - return &users_resp.User{ - Id: id, - Name: req.Name, - Username: req.Username, + return &iam_resp.UpdateUserResp{ + User: &iam_common.User{ + Id: req.Id, + Name: req.Name, + MembershipId: membershipID, + }, }, nil } - t.Run("it returns the id and found=true", func(t *testing.T) { + t.Run("it returns the membership id and found=true", func(t *testing.T) { returnID, returnFound, err := adminmgmt.CreateAdminUserOrUpdatePassword(ctx, apiClient, pw, false) require.NoError(t, err) - assert.Equal(t, id, returnID) + assert.Equal(t, membershipID, returnID) assert.True(t, returnFound) }) - t.Run("when in dry run mode it returns the id and found=true", func(t *testing.T) { + t.Run("when in dry run mode it returns the membership id and found=true", func(t *testing.T) { returnID, returnFound, err := adminmgmt.CreateAdminUserOrUpdatePassword(ctx, apiClient, pw, true) require.NoError(t, err) - assert.Equal(t, id, returnID) + assert.Equal(t, membershipID, returnID) assert.True(t, returnFound) }) }) @@ -136,96 +138,70 @@ func TestEnsureTeam(t *testing.T) { defer apiClient.CloseConnection() t.Run("when GetTeams fails with an unexpected error then raise that error", func(t *testing.T) { - serverMocks.TeamsMock.GetTeamsFunc = getTeamsError(codes.Internal) + serverMocks.TeamsMock.GetTeamFunc = getTeamError(codes.Internal) - _, _, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, false) + _, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, false) require.Error(t, err) }) t.Run("when the admins team does not exist", func(t *testing.T) { - serverMocks.TeamsMock.GetTeamsFunc = func( - context.Context, *teams_req.GetTeamsReq) (*teams_resp.Teams, error) { - - return &teams_resp.Teams{ - Teams: []*teams_resp.Team{ - { - Id: "mocked-not-admin-id", - Name: "not-admin", - Description: "some other team", - }, - }, - }, nil - } + serverMocks.TeamsMock.GetTeamFunc = getTeamError(codes.NotFound) - t.Run("it is created and its id and found=false are returned", func(t *testing.T) { + t.Run("it is created and found=false is returned", func(t *testing.T) { createAdminID := "mocked-admin-id" serverMocks.TeamsMock.CreateTeamFunc = func( - _ context.Context, req *teams_req.CreateTeamReq) (*teams_resp.CreateTeamResp, error) { + _ context.Context, req *iam_req.CreateTeamReq) (*iam_resp.CreateTeamResp, error) { - if "admins" != req.Name || - "admins" != req.Description { + if "admins" != req.Id || + "admins" != req.Name { return nil, errors.New("unexpected arguments") } - return &teams_resp.CreateTeamResp{ - Team: &teams_resp.Team{ - Id: createAdminID, - Name: req.Name, - Description: req.Description, + return &iam_resp.CreateTeamResp{ + Team: &iam_common.Team{ + Id: createAdminID, + Name: req.Name, }, }, nil } - id, found, err := adminmgmt.CreateAdminTeamIfMissing(ctx, apiClient, false) + found, err := adminmgmt.CreateAdminTeamIfMissing(ctx, apiClient, false) require.NoError(t, err) - assert.Equal(t, createAdminID, id) assert.False(t, found) }) - t.Run("and dry run mode is on it is not created, id is empty, and found=false are returned", func(t *testing.T) { + t.Run("and dry run mode is on, it is not created and found=false is returned", func(t *testing.T) { serverMocks.TeamsMock.CreateTeamFunc = createTeamCallUnexpected - id, found, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, true) + found, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, true) require.NoError(t, err) - assert.Equal(t, "", id) assert.False(t, found) }) }) t.Run("when the admins team exists already", func(t *testing.T) { - mockedAdminsID := "mocked-admin-id" - serverMocks.TeamsMock.GetTeamsFunc = func( - context.Context, *teams_req.GetTeamsReq) (*teams_resp.Teams, error) { - - return &teams_resp.Teams{ - Teams: []*teams_resp.Team{ - { - Id: "mocked-not-admin-id", - Name: "not-admin", - Description: "some other team", - }, - { - Id: mockedAdminsID, - Name: "admins", - Description: "admins", - }, + serverMocks.TeamsMock.GetTeamFunc = func( + context.Context, *iam_req.GetTeamReq) (*iam_resp.GetTeamResp, error) { + + return &iam_resp.GetTeamResp{ + Team: &iam_common.Team{ + Id: "admins", + Name: "admins", }, }, nil } serverMocks.TeamsMock.CreateTeamFunc = createTeamCallUnexpected - t.Run("it returns the team id and found=true", func(t *testing.T) { - id, found, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, false) + t.Run("it returns found=true", func(t *testing.T) { + found, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, false) require.NoError(t, err) - assert.Equal(t, mockedAdminsID, id) assert.True(t, found) }) - t.Run("when in dry run mode it returns and empty id and found=true", func(t *testing.T) { - id, found, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, false) + t.Run("when in dry run mode it returns found=true", func(t *testing.T) { + found, err := adminmgmt.EnsureTeam(ctx, "admins", "the admin team", apiClient, false) require.NoError(t, err) - assert.Equal(t, mockedAdminsID, id) assert.True(t, found) }) }) @@ -238,12 +214,12 @@ func TestAddAdminUserToTeam(t *testing.T) { teamsID := "teams-id" userID := "user-id" - t.Run("when GetUsers fails with an unexpected error then raise that error", func(t *testing.T) { - serverMocks.TeamsMock.GetUsersFunc = func( - _ context.Context, req *teams_req.GetUsersReq) (*teams_resp.GetUsersResp, error) { + t.Run("when GetTeamMembership fails with an unexpected error then raise that error", func(t *testing.T) { + serverMocks.TeamsMock.GetTeamMembershipFunc = func( + _ context.Context, req *iam_req.GetTeamMembershipReq) (*iam_resp.GetTeamMembershipResp, error) { if teamsID != req.Id { - return &teams_resp.GetUsersResp{}, nil // unexpected arguments + return &iam_resp.GetTeamMembershipResp{}, nil // unexpected arguments } return nil, status.Error(codes.Internal, "unexpected error") } @@ -253,13 +229,13 @@ func TestAddAdminUserToTeam(t *testing.T) { }) t.Run("when the admin is on the team", func(t *testing.T) { - serverMocks.TeamsMock.GetUsersFunc = func( - _ context.Context, req *teams_req.GetUsersReq) (*teams_resp.GetUsersResp, error) { + serverMocks.TeamsMock.GetTeamMembershipFunc = func( + _ context.Context, req *iam_req.GetTeamMembershipReq) (*iam_resp.GetTeamMembershipResp, error) { if teamsID != req.Id { return nil, errors.New("unexpected arguments") } - return &teams_resp.GetUsersResp{ + return &iam_resp.GetTeamMembershipResp{ UserIds: []string{"1", userID, "3"}, }, nil } @@ -278,28 +254,26 @@ func TestAddAdminUserToTeam(t *testing.T) { }) t.Run("when the admin is not on the team", func(t *testing.T) { - serverMocks.TeamsMock.GetUsersFunc = func( - _ context.Context, req *teams_req.GetUsersReq) (*teams_resp.GetUsersResp, error) { + serverMocks.TeamsMock.GetTeamMembershipFunc = func( + _ context.Context, req *iam_req.GetTeamMembershipReq) (*iam_resp.GetTeamMembershipResp, error) { if teamsID != req.Id { return nil, errors.New("unexpected arguments") } - return &teams_resp.GetUsersResp{ + return &iam_resp.GetTeamMembershipResp{ UserIds: []string{"1", "3"}, }, nil } t.Run("it calls AddUsers returns addUser=true", func(t *testing.T) { - serverMocks.TeamsMock.AddUsersFunc = func( - _ context.Context, req *teams_req.AddUsersReq) (*teams_resp.AddUsersResp, error) { + serverMocks.TeamsMock.AddTeamMembersFunc = func( + _ context.Context, req *iam_req.AddTeamMembersReq) (*iam_resp.AddTeamMembersResp, error) { if teamsID != req.Id || len(req.UserIds) != 1 || userID != req.UserIds[0] { return nil, errors.New("unexpected arguments") } - return &teams_resp.AddUsersResp{ - Team: &teams_resp.Team{ - Id: teamsID, - }, + return &iam_resp.AddTeamMembersResp{ + UserIds: req.UserIds, }, nil } @@ -309,11 +283,11 @@ func TestAddAdminUserToTeam(t *testing.T) { }) t.Run("when AddUsers returns an unexpected error it raises the error", func(t *testing.T) { - serverMocks.TeamsMock.AddUsersFunc = func( - _ context.Context, req *teams_req.AddUsersReq) (*teams_resp.AddUsersResp, error) { + serverMocks.TeamsMock.AddTeamMembersFunc = func( + _ context.Context, req *iam_req.AddTeamMembersReq) (*iam_resp.AddTeamMembersResp, error) { if teamsID != req.Id || len(req.UserIds) != 1 || userID != req.UserIds[0] { - return &teams_resp.AddUsersResp{}, nil // unexpected arguments + return &iam_resp.AddTeamMembersResp{}, nil // unexpected arguments } return nil, status.Error(codes.Internal, "unexpected error") } @@ -323,8 +297,8 @@ func TestAddAdminUserToTeam(t *testing.T) { }) t.Run("and dry run is enabled it returns addUser=false", func(t *testing.T) { - serverMocks.TeamsMock.AddUsersFunc = func( - context.Context, *teams_req.AddUsersReq) (*teams_resp.AddUsersResp, error) { + serverMocks.TeamsMock.AddTeamMembersFunc = func( + _ context.Context, req *iam_req.AddTeamMembersReq) (*iam_resp.AddTeamMembersResp, error) { return nil, errors.New("unexpected call") } @@ -335,114 +309,7 @@ func TestAddAdminUserToTeam(t *testing.T) { }) }) } - -func TestUpdateV1AdminsPolicyIfNeeded(t *testing.T) { - ctx := context.Background() - apiClient, serverMocks, err := mock.CreateMockConn(t) - require.NoError(t, err) - defer apiClient.CloseConnection() - - t.Run("when ListPolicies fails with an unexpected error then raise that error", func(t *testing.T) { - serverMocks.AuthzMock.ListPoliciesFunc = func( - context.Context, *authz_req.ListPoliciesReq) (*authz_resp.ListPoliciesResp, error) { - return nil, status.Error(codes.Internal, "unexpected error") - } - - _, _, err := adminmgmt.UpdateV1AdminsPolicyIfNeeded(ctx, apiClient, false) - require.Error(t, err) - }) - - t.Run("when the original admins policy does not exist it returns false, true, nil", func(t *testing.T) { - serverMocks.AuthzMock.ListPoliciesFunc = func( - context.Context, *authz_req.ListPoliciesReq) (*authz_resp.ListPoliciesResp, error) { - - return &authz_resp.ListPoliciesResp{ - Policies: []*authz_resp.Policy{ - { - Id: "wrong-id", - Subjects: []string{authz_constants.LocalAdminsTeamSubject, "some:other:subject"}, - }, - }, - }, nil - } - - serverMocks.AuthzMock.CreatePolicyFunc = createDefaultAdminPolicy - - foundPolicy, createdNewPolicy, err := adminmgmt.UpdateV1AdminsPolicyIfNeeded(ctx, apiClient, false) - require.NoError(t, err) - assert.False(t, foundPolicy) - assert.True(t, createdNewPolicy) - }) - - t.Run("when the original admins policy exists and contains the admins team it returns true, false, nil", func(t *testing.T) { - serverMocks.AuthzMock.ListPoliciesFunc = func( - context.Context, *authz_req.ListPoliciesReq) (*authz_resp.ListPoliciesResp, error) { - - return &authz_resp.ListPoliciesResp{ - Policies: []*authz_resp.Policy{ - { - Id: authz_constants_v1.AdminPolicyID, - Subjects: []string{authz_constants.LocalAdminsTeamSubject, "some:other:subject"}, - }, - }, - }, nil - } - - serverMocks.AuthzMock.CreatePolicyFunc = func( - context.Context, *authz_req.CreatePolicyReq) (*authz_resp.CreatePolicyResp, error) { - return nil, errors.New("unexpected call") - } - - foundPolicy, createdNewPolicy, err := adminmgmt.UpdateV1AdminsPolicyIfNeeded(ctx, apiClient, false) - require.NoError(t, err) - assert.True(t, foundPolicy) - assert.False(t, createdNewPolicy) - }) - - t.Run("when the original admins policy exists and does not contain the admins team it returns true, true, nil", func(t *testing.T) { - serverMocks.AuthzMock.ListPoliciesFunc = func( - context.Context, *authz_req.ListPoliciesReq) (*authz_resp.ListPoliciesResp, error) { - - return &authz_resp.ListPoliciesResp{ - Policies: []*authz_resp.Policy{ - { - Id: authz_constants_v1.AdminPolicyID, - Subjects: []string{"some:other:subject"}, - }, - }, - }, nil - } - serverMocks.AuthzMock.CreatePolicyFunc = createDefaultAdminPolicy - - foundPolicy, createdNewPolicy, err := adminmgmt.UpdateV1AdminsPolicyIfNeeded(ctx, apiClient, false) - require.NoError(t, err) - assert.True(t, foundPolicy) - assert.True(t, createdNewPolicy) - }) - - t.Run("when the original admins policy exists and does not contain the admins team it returns true, true, nil", func(t *testing.T) { - serverMocks.AuthzMock.ListPoliciesFunc = func( - context.Context, *authz_req.ListPoliciesReq) (*authz_resp.ListPoliciesResp, error) { - - return &authz_resp.ListPoliciesResp{ - Policies: []*authz_resp.Policy{ - { - Id: authz_constants_v1.AdminPolicyID, - Subjects: []string{"some:other:subject"}, - }, - }, - }, nil - } - serverMocks.AuthzMock.CreatePolicyFunc = createDefaultAdminPolicy - - foundPolicy, createdNewPolicy, err := adminmgmt.UpdateV1AdminsPolicyIfNeeded(ctx, apiClient, false) - require.NoError(t, err) - assert.True(t, foundPolicy) - assert.True(t, createdNewPolicy) - }) -} - -func TestUpdateV2AdminsPolicyIfNeeded(t *testing.T) { +func TestUpdateAdminsPolicyIfNeeded(t *testing.T) { ctx := context.Background() apiClient, serverMocks, err := mock.CreateMockConn(t) require.NoError(t, err) @@ -450,72 +317,72 @@ func TestUpdateV2AdminsPolicyIfNeeded(t *testing.T) { t.Run("when ListPolicyMembers fails with an unexpected error then raise that error", func(t *testing.T) { serverMocks.PoliciesMock.ListPolicyMembersFunc = func( - context.Context, *policies_req.ListPolicyMembersReq) (*policies_resp.ListPolicyMembersResp, error) { + context.Context, *iam_req.ListPolicyMembersReq) (*iam_resp.ListPolicyMembersResp, error) { return nil, status.Error(codes.Internal, "unexpected error") } - _, err := adminmgmt.UpdateV2AdminsPolicyIfNeeded(ctx, apiClient, false) + _, err := adminmgmt.UpdateAdminsPolicyIfNeeded(ctx, apiClient, false) require.Error(t, err) }) t.Run("when AddPolicyMembers fails with an unexpected error then raise that error", func(t *testing.T) { serverMocks.PoliciesMock.AddPolicyMembersFunc = func( - context.Context, *policies_req.AddPolicyMembersReq) (*policies_resp.AddPolicyMembersResp, error) { + context.Context, *iam_req.AddPolicyMembersReq) (*iam_resp.AddPolicyMembersResp, error) { return nil, status.Error(codes.Internal, "unexpected error") } - _, err := adminmgmt.UpdateV2AdminsPolicyIfNeeded(ctx, apiClient, false) + _, err := adminmgmt.UpdateAdminsPolicyIfNeeded(ctx, apiClient, false) require.Error(t, err) }) t.Run("returns true (found) when ListPolicyMembers returns with admins team in Admin policy", func(t *testing.T) { serverMocks.PoliciesMock.ListPolicyMembersFunc = func( - context.Context, *policies_req.ListPolicyMembersReq) (*policies_resp.ListPolicyMembersResp, error) { - return &policies_resp.ListPolicyMembersResp{ + context.Context, *iam_req.ListPolicyMembersReq) (*iam_resp.ListPolicyMembersResp, error) { + return &iam_resp.ListPolicyMembersResp{ Members: []string{authz_constants.LocalAdminsTeamSubject}, }, nil } - foundInPolicy, err := adminmgmt.UpdateV2AdminsPolicyIfNeeded(ctx, apiClient, false) + foundInPolicy, err := adminmgmt.UpdateAdminsPolicyIfNeeded(ctx, apiClient, false) require.NoError(t, err) assert.True(t, foundInPolicy) }) t.Run("returns false (not found) when admins team must be added to Admin policy", func(t *testing.T) { serverMocks.PoliciesMock.ListPolicyMembersFunc = func( - context.Context, *policies_req.ListPolicyMembersReq) (*policies_resp.ListPolicyMembersResp, error) { - return &policies_resp.ListPolicyMembersResp{ + context.Context, *iam_req.ListPolicyMembersReq) (*iam_resp.ListPolicyMembersResp, error) { + return &iam_resp.ListPolicyMembersResp{ Members: []string{}, }, nil } serverMocks.PoliciesMock.AddPolicyMembersFunc = func( - context.Context, *policies_req.AddPolicyMembersReq) (*policies_resp.AddPolicyMembersResp, error) { - return &policies_resp.AddPolicyMembersResp{ + context.Context, *iam_req.AddPolicyMembersReq) (*iam_resp.AddPolicyMembersResp, error) { + return &iam_resp.AddPolicyMembersResp{ Members: []string{authz_constants.LocalAdminsTeamSubject}, }, nil } - foundInPolicy, err := adminmgmt.UpdateV2AdminsPolicyIfNeeded(ctx, apiClient, false) + foundInPolicy, err := adminmgmt.UpdateAdminsPolicyIfNeeded(ctx, apiClient, false) require.NoError(t, err) assert.False(t, foundInPolicy) }) } -func getUserByUsernameError(c codes.Code) func(context.Context, *users_req.Username) (*users_resp.User, error) { - return func(context.Context, *users_req.Username) (*users_resp.User, error) { +func getUserError(c codes.Code) func(context.Context, *iam_req.GetUserReq) (*iam_resp.GetUserResp, error) { + return func(context.Context, *iam_req.GetUserReq) (*iam_resp.GetUserResp, error) { return nil, status.Error(c, "unexpected error") } } -func getTeamsError(c codes.Code) func(context.Context, *teams_req.GetTeamsReq) (*teams_resp.Teams, error) { - return func(context.Context, *teams_req.GetTeamsReq) (*teams_resp.Teams, error) { +func getTeamError(c codes.Code) func(context.Context, *iam_req.GetTeamReq) (*iam_resp.GetTeamResp, error) { + return func(context.Context, *iam_req.GetTeamReq) (*iam_resp.GetTeamResp, error) { return nil, status.Error(c, "unexpected error") } } func createTeamCallUnexpected( - context.Context, *teams_req.CreateTeamReq) (*teams_resp.CreateTeamResp, error) { + context.Context, *iam_req.CreateTeamReq) (*iam_resp.CreateTeamResp, error) { return nil, errors.New("unexpected call") } diff --git a/components/automate-cli/pkg/client/apiclient/apiclient.go b/components/automate-cli/pkg/client/apiclient/apiclient.go index 4ae34de92cc..8f37264ac66 100644 --- a/components/automate-cli/pkg/client/apiclient/apiclient.go +++ b/components/automate-cli/pkg/client/apiclient/apiclient.go @@ -9,8 +9,6 @@ import ( client_type "github.com/chef/automate/components/automate-cli/pkg/client" "github.com/chef/automate/components/automate-cli/pkg/status" "github.com/chef/automate/components/automate-deployment/pkg/constants" - "github.com/chef/automate/components/automate-gateway/api/auth/teams" - "github.com/chef/automate/components/automate-gateway/api/auth/users" "github.com/chef/automate/components/automate-gateway/api/authz" "github.com/chef/automate/components/automate-gateway/api/compliance/reporting" iam "github.com/chef/automate/components/automate-gateway/api/iam/v2" @@ -22,10 +20,9 @@ type client struct { apiClientConn *grpc.ClientConn // TODO (tc): Add other service clients here as needed. authzClient authz.AuthorizationClient - teamsClient teams.TeamsClient - teamsV2Client iam.TeamsClient - TokensClient iam.TokensClient - usersClient users.UsersMgmtClient + teamsClient iam.TeamsClient + tokensClient iam.TokensClient + usersClient iam.UsersClient policiesClient iam.PoliciesClient reportingClient reporting.ReportingServiceClient applicationsClient applications.ApplicationsServiceClient @@ -55,10 +52,9 @@ func OpenConnection(ctx context.Context) (client_type.APIClient, error) { apiClientConn: apiClientConn, // TODO (tc): Add other service clients here as needed. authzClient: authz.NewAuthorizationClient(apiClientConn), - teamsClient: teams.NewTeamsClient(apiClientConn), - teamsV2Client: iam.NewTeamsClient(apiClientConn), - TokensClient: iam.NewTokensClient(apiClientConn), - usersClient: users.NewUsersMgmtClient(apiClientConn), + teamsClient: iam.NewTeamsClient(apiClientConn), + tokensClient: iam.NewTokensClient(apiClientConn), + usersClient: iam.NewUsersClient(apiClientConn), policiesClient: iam.NewPoliciesClient(apiClientConn), reportingClient: reporting.NewReportingServiceClient(apiClientConn), applicationsClient: applications.NewApplicationsServiceClient(apiClientConn), @@ -69,19 +65,15 @@ func (c client) AuthzClient() authz.AuthorizationClient { return c.authzClient } -func (c client) TeamsClient() teams.TeamsClient { +func (c client) TeamsClient() iam.TeamsClient { return c.teamsClient } -func (c client) TeamsV2Client() iam.TeamsClient { - return c.teamsV2Client -} - func (c client) TokensClient() iam.TokensClient { - return c.TokensClient + return c.tokensClient } -func (c client) UsersClient() users.UsersMgmtClient { +func (c client) UsersClient() iam.UsersClient { return c.usersClient } diff --git a/components/automate-cli/pkg/client/mock/mock.go b/components/automate-cli/pkg/client/mock/mock.go index 86d0f87435f..cd01df931a6 100644 --- a/components/automate-cli/pkg/client/mock/mock.go +++ b/components/automate-cli/pkg/client/mock/mock.go @@ -7,8 +7,6 @@ import ( "github.com/chef/automate/api/external/applications" "github.com/chef/automate/components/automate-cli/pkg/client" - "github.com/chef/automate/components/automate-gateway/api/auth/teams" - "github.com/chef/automate/components/automate-gateway/api/auth/users" "github.com/chef/automate/components/automate-gateway/api/authz" "github.com/chef/automate/components/automate-gateway/api/compliance/reporting" iam "github.com/chef/automate/components/automate-gateway/api/iam/v2" @@ -20,10 +18,9 @@ import ( // Mock is a mocked out APIClient. type Mock struct { authzClient authz.AuthorizationClient - teamsClient teams.TeamsClient - teamsV2Client iam.TeamsClient - TokensClient iam.TokensClient - usersClient users.UsersMgmtClient + teamsClient iam.TeamsClient + tokensClient iam.TokensClient + usersClient iam.UsersClient policiesClient iam.PoliciesClient reportingClient reporting.ReportingServiceClient applicationsClient applications.ApplicationsServiceClient @@ -34,10 +31,9 @@ type Mock struct { type ServerMocks struct { AuthzMock *authz.AuthorizationServerMock PoliciesMock *iam.PoliciesServerMock - TeamsMock *teams.TeamsServerMock - TeamsV2Mock *iam.TeamsServerMock + TeamsMock *iam.TeamsServerMock TokensMock *iam.TokensServerMock - UsersMock *users.UsersMgmtServerMock + UsersMock *iam.UsersServerMock } // CreateMockConn returns a mocked version of APIClient that @@ -57,14 +53,11 @@ func CreateMockConn(t *testing.T) (client.APIClient, ServerMocks, error) { mockPolicies := iam.NewPoliciesServerMock() iam.RegisterPoliciesServer(grpcGateway, mockPolicies) - mockTeams := teams.NewTeamsServerMock() - teams.RegisterTeamsServer(grpcGateway, mockTeams) + mockTeams := iam.NewTeamsServerMock() + iam.RegisterTeamsServer(grpcGateway, mockTeams) - mockV2Teams := iam.NewTeamsServerMock() - iam.RegisterTeamsServer(grpcGateway, mockV2Teams) - - mockUsers := users.NewUsersMgmtServerMock() - users.RegisterUsersMgmtServer(grpcGateway, mockUsers) + mockUsers := iam.NewUsersServerMock() + iam.RegisterUsersServer(grpcGateway, mockUsers) grpcServer := grpctest.NewServer(grpcGateway) gatewayConn, err := connFactory.Dial("automate-gateway", grpcServer.URL) @@ -72,10 +65,9 @@ func CreateMockConn(t *testing.T) (client.APIClient, ServerMocks, error) { return Mock{ authzClient: authz.NewAuthorizationClient(gatewayConn), - teamsClient: teams.NewTeamsClient(gatewayConn), - teamsV2Client: iam.NewTeamsClient(gatewayConn), - TokensClient: iam.NewTokensClient(gatewayConn), - usersClient: users.NewUsersMgmtClient(gatewayConn), + teamsClient: iam.NewTeamsClient(gatewayConn), + tokensClient: iam.NewTokensClient(gatewayConn), + usersClient: iam.NewUsersClient(gatewayConn), policiesClient: iam.NewPoliciesClient(gatewayConn), reportingClient: reporting.NewReportingServiceClient(gatewayConn), applicationsClient: applications.NewApplicationsServiceClient(gatewayConn), @@ -97,22 +89,17 @@ func (c Mock) AuthzClient() authz.AuthorizationClient { } // TeamsClient returns mock TeamsClient -func (c Mock) TeamsClient() teams.TeamsClient { +func (c Mock) TeamsClient() iam.TeamsClient { return c.teamsClient } -// TeamsClient returns mock TeamsClient -func (c Mock) TeamsV2Client() iam.TeamsClient { - return c.teamsV2Client -} - // TokensClient returns mock TokensClient func (c Mock) TokensClient() iam.TokensClient { - return c.TokensClient + return c.tokensClient } // UsersClient returns mock UsersClient -func (c Mock) UsersClient() users.UsersMgmtClient { +func (c Mock) UsersClient() iam.UsersClient { return c.usersClient } diff --git a/components/automate-cli/pkg/client/types.go b/components/automate-cli/pkg/client/types.go index accab35ac40..3eb71dba4d0 100644 --- a/components/automate-cli/pkg/client/types.go +++ b/components/automate-cli/pkg/client/types.go @@ -2,22 +2,20 @@ package client import ( "github.com/chef/automate/api/external/applications" - "github.com/chef/automate/components/automate-gateway/api/auth/teams" - "github.com/chef/automate/components/automate-gateway/api/auth/users" + "github.com/chef/automate/components/automate-gateway/api/authz" "github.com/chef/automate/components/automate-gateway/api/compliance/reporting" + iam "github.com/chef/automate/components/automate-gateway/api/iam/v2" ) // APIClient is an API client ready for making requests against our public API. // The client will auth via the deployment-service cert, which has a system level // policy granting it universal access to our API. type APIClient interface { - // TODO (tc): Add other service clients here as needed. AuthzClient() authz.AuthorizationClient - TeamsClient() teams.TeamsClient - TeamsV2Client() iam.TeamsClient + TeamsClient() iam.TeamsClient TokensClient() iam.TokensClient - UsersClient() users.UsersMgmtClient + UsersClient() iam.UsersClient PoliciesClient() iam.PoliciesClient ReportingClient() reporting.ReportingServiceClient ApplicationsClient() applications.ApplicationsServiceClient diff --git a/components/automate-gateway/api/api_test.go b/components/automate-gateway/api/api_test.go index 2d60514524a..b2108dbd95b 100644 --- a/components/automate-gateway/api/api_test.go +++ b/components/automate-gateway/api/api_test.go @@ -13,7 +13,6 @@ import ( _ "github.com/chef/automate/api/external/nodes/manager" _ "github.com/chef/automate/api/external/secrets" _ "github.com/chef/automate/components/automate-gateway/api/auth/teams" - _ "github.com/chef/automate/components/automate-gateway/api/auth/users" _ "github.com/chef/automate/components/automate-gateway/api/authz" _ "github.com/chef/automate/components/automate-gateway/api/compliance/profiles" _ "github.com/chef/automate/components/automate-gateway/api/compliance/reporting" diff --git a/components/automate-gateway/api/auth/users/request/users.pb.go b/components/automate-gateway/api/auth/users/request/users.pb.go deleted file mode 100644 index c057fa8ecb0..00000000000 --- a/components/automate-gateway/api/auth/users/request/users.pb.go +++ /dev/null @@ -1,382 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/request/users.proto - -package request - -import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type GetUsersReq struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *GetUsersReq) Reset() { *m = GetUsersReq{} } -func (m *GetUsersReq) String() string { return proto.CompactTextString(m) } -func (*GetUsersReq) ProtoMessage() {} -func (*GetUsersReq) Descriptor() ([]byte, []int) { - return fileDescriptor_673b04efe8341c37, []int{0} -} - -func (m *GetUsersReq) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetUsersReq.Unmarshal(m, b) -} -func (m *GetUsersReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetUsersReq.Marshal(b, m, deterministic) -} -func (m *GetUsersReq) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetUsersReq.Merge(m, src) -} -func (m *GetUsersReq) XXX_Size() int { - return xxx_messageInfo_GetUsersReq.Size(m) -} -func (m *GetUsersReq) XXX_DiscardUnknown() { - xxx_messageInfo_GetUsersReq.DiscardUnknown(m) -} - -var xxx_messageInfo_GetUsersReq proto.InternalMessageInfo - -type CreateUser struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` // Deprecated: Do not use. - Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CreateUser) Reset() { *m = CreateUser{} } -func (m *CreateUser) String() string { return proto.CompactTextString(m) } -func (*CreateUser) ProtoMessage() {} -func (*CreateUser) Descriptor() ([]byte, []int) { - return fileDescriptor_673b04efe8341c37, []int{1} -} - -func (m *CreateUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateUser.Unmarshal(m, b) -} -func (m *CreateUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateUser.Marshal(b, m, deterministic) -} -func (m *CreateUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateUser.Merge(m, src) -} -func (m *CreateUser) XXX_Size() int { - return xxx_messageInfo_CreateUser.Size(m) -} -func (m *CreateUser) XXX_DiscardUnknown() { - xxx_messageInfo_CreateUser.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateUser proto.InternalMessageInfo - -func (m *CreateUser) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *CreateUser) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Deprecated: Do not use. -func (m *CreateUser) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *CreateUser) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *CreateUser) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -type UpdateUser struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` // Deprecated: Do not use. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - Password string `protobuf:"bytes,4,opt,name=password,proto3" json:"password,omitempty"` - Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateUser) Reset() { *m = UpdateUser{} } -func (m *UpdateUser) String() string { return proto.CompactTextString(m) } -func (*UpdateUser) ProtoMessage() {} -func (*UpdateUser) Descriptor() ([]byte, []int) { - return fileDescriptor_673b04efe8341c37, []int{2} -} - -func (m *UpdateUser) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateUser.Unmarshal(m, b) -} -func (m *UpdateUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateUser.Marshal(b, m, deterministic) -} -func (m *UpdateUser) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateUser.Merge(m, src) -} -func (m *UpdateUser) XXX_Size() int { - return xxx_messageInfo_UpdateUser.Size(m) -} -func (m *UpdateUser) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateUser.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateUser proto.InternalMessageInfo - -func (m *UpdateUser) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -// Deprecated: Do not use. -func (m *UpdateUser) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *UpdateUser) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateUser) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *UpdateUser) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -type UpdateSelf struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` - Username string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"` - PreviousPassword string `protobuf:"bytes,5,opt,name=previous_password,json=previousPassword,proto3" json:"previous_password,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *UpdateSelf) Reset() { *m = UpdateSelf{} } -func (m *UpdateSelf) String() string { return proto.CompactTextString(m) } -func (*UpdateSelf) ProtoMessage() {} -func (*UpdateSelf) Descriptor() ([]byte, []int) { - return fileDescriptor_673b04efe8341c37, []int{3} -} - -func (m *UpdateSelf) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateSelf.Unmarshal(m, b) -} -func (m *UpdateSelf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateSelf.Marshal(b, m, deterministic) -} -func (m *UpdateSelf) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateSelf.Merge(m, src) -} -func (m *UpdateSelf) XXX_Size() int { - return xxx_messageInfo_UpdateSelf.Size(m) -} -func (m *UpdateSelf) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateSelf.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateSelf proto.InternalMessageInfo - -func (m *UpdateSelf) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *UpdateSelf) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *UpdateSelf) GetPassword() string { - if m != nil { - return m.Password - } - return "" -} - -func (m *UpdateSelf) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func (m *UpdateSelf) GetPreviousPassword() string { - if m != nil { - return m.PreviousPassword - } - return "" -} - -type Email struct { - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Email) Reset() { *m = Email{} } -func (m *Email) String() string { return proto.CompactTextString(m) } -func (*Email) ProtoMessage() {} -func (*Email) Descriptor() ([]byte, []int) { - return fileDescriptor_673b04efe8341c37, []int{4} -} - -func (m *Email) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Email.Unmarshal(m, b) -} -func (m *Email) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Email.Marshal(b, m, deterministic) -} -func (m *Email) XXX_Merge(src proto.Message) { - xxx_messageInfo_Email.Merge(m, src) -} -func (m *Email) XXX_Size() int { - return xxx_messageInfo_Email.Size(m) -} -func (m *Email) XXX_DiscardUnknown() { - xxx_messageInfo_Email.DiscardUnknown(m) -} - -var xxx_messageInfo_Email proto.InternalMessageInfo - -func (m *Email) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -type Username struct { - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Username) Reset() { *m = Username{} } -func (m *Username) String() string { return proto.CompactTextString(m) } -func (*Username) ProtoMessage() {} -func (*Username) Descriptor() ([]byte, []int) { - return fileDescriptor_673b04efe8341c37, []int{5} -} - -func (m *Username) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Username.Unmarshal(m, b) -} -func (m *Username) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Username.Marshal(b, m, deterministic) -} -func (m *Username) XXX_Merge(src proto.Message) { - xxx_messageInfo_Username.Merge(m, src) -} -func (m *Username) XXX_Size() int { - return xxx_messageInfo_Username.Size(m) -} -func (m *Username) XXX_DiscardUnknown() { - xxx_messageInfo_Username.DiscardUnknown(m) -} - -var xxx_messageInfo_Username proto.InternalMessageInfo - -func (m *Username) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -func init() { - proto.RegisterType((*GetUsersReq)(nil), "chef.automate.api.users.request.GetUsersReq") - proto.RegisterType((*CreateUser)(nil), "chef.automate.api.users.request.CreateUser") - proto.RegisterType((*UpdateUser)(nil), "chef.automate.api.users.request.UpdateUser") - proto.RegisterType((*UpdateSelf)(nil), "chef.automate.api.users.request.UpdateSelf") - proto.RegisterType((*Email)(nil), "chef.automate.api.users.request.Email") - proto.RegisterType((*Username)(nil), "chef.automate.api.users.request.Username") -} - -func init() { - proto.RegisterFile("components/automate-gateway/api/auth/users/request/users.proto", fileDescriptor_673b04efe8341c37) -} - -var fileDescriptor_673b04efe8341c37 = []byte{ - // 317 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0x41, 0x4b, 0xfb, 0x30, - 0x18, 0xc6, 0x69, 0xb7, 0xfd, 0xd9, 0x3f, 0xa2, 0x68, 0xf0, 0x10, 0x04, 0x51, 0x7a, 0x10, 0x41, - 0x6c, 0x0e, 0xde, 0x3d, 0x4c, 0xc4, 0x83, 0x08, 0x32, 0xd9, 0xc5, 0x8b, 0x64, 0xed, 0xbb, 0x35, - 0xb0, 0x36, 0x59, 0x92, 0x3a, 0xbc, 0xfa, 0x1d, 0xfc, 0xbe, 0x92, 0xc4, 0x84, 0x3a, 0xb0, 0xe8, - 0xad, 0xef, 0xf3, 0xf6, 0xed, 0xf3, 0xeb, 0xc3, 0x83, 0xae, 0x0b, 0x51, 0x4b, 0xd1, 0x40, 0x63, - 0x34, 0x65, 0xad, 0x11, 0x35, 0x33, 0x70, 0xb9, 0x64, 0x06, 0x36, 0xec, 0x8d, 0x32, 0xc9, 0xad, - 0x58, 0xd1, 0x56, 0x83, 0xd2, 0x54, 0xc1, 0xba, 0x05, 0x6d, 0xfc, 0x94, 0x4b, 0x25, 0x8c, 0xc0, - 0x27, 0x45, 0x05, 0x8b, 0x3c, 0x5c, 0xe6, 0x4c, 0xf2, 0xdc, 0xaf, 0xbf, 0x5e, 0xce, 0x76, 0xd1, - 0xce, 0x1d, 0x98, 0x99, 0xd5, 0xa6, 0xb0, 0xce, 0xde, 0x13, 0x84, 0x6e, 0x14, 0x30, 0x03, 0x56, - 0xc2, 0x7b, 0x28, 0xe5, 0x25, 0x49, 0x4e, 0x93, 0xf3, 0xff, 0xd3, 0x94, 0x97, 0x18, 0xa3, 0x61, - 0xc3, 0x6a, 0x20, 0xa9, 0x53, 0xdc, 0x33, 0x26, 0x68, 0x04, 0x35, 0xe3, 0x2b, 0x32, 0xb0, 0xe2, - 0x24, 0x25, 0xc9, 0xd4, 0x0b, 0xf8, 0x08, 0x8d, 0xad, 0x99, 0xbb, 0x18, 0xb9, 0x8b, 0x38, 0xdb, - 0x9d, 0x64, 0x5a, 0x6f, 0x84, 0x2a, 0xc9, 0xd0, 0xef, 0xc2, 0xec, 0x20, 0x66, 0xb2, 0xfc, 0x09, - 0x22, 0x1a, 0xa6, 0xdb, 0x86, 0x01, 0x6f, 0xd0, 0xc1, 0xeb, 0x31, 0xea, 0x03, 0xcc, 0x3e, 0x22, - 0xc4, 0x13, 0xac, 0x16, 0xbf, 0x4a, 0xa2, 0x6b, 0x35, 0xe8, 0xb1, 0x1a, 0x6e, 0x65, 0x71, 0x81, - 0x0e, 0xa4, 0x82, 0x57, 0x2e, 0x5a, 0xfd, 0x12, 0x3f, 0xe0, 0x79, 0xf6, 0xc3, 0xe2, 0x31, 0x84, - 0x73, 0x8c, 0x46, 0xb7, 0xee, 0x67, 0x0f, 0x43, 0x0c, 0x1e, 0xca, 0x0f, 0xd9, 0x19, 0x1a, 0xcf, - 0x3a, 0x19, 0x47, 0xcf, 0xe4, 0xbb, 0xe7, 0xe4, 0xe1, 0xf9, 0x7e, 0xc9, 0x4d, 0xd5, 0xce, 0xf3, - 0x42, 0xd4, 0xd4, 0xb6, 0x24, 0xf6, 0x8b, 0xfe, 0xbd, 0x73, 0xf3, 0x7f, 0xae, 0x6e, 0x57, 0x9f, - 0x01, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x32, 0xa8, 0x97, 0xb0, 0x02, 0x00, 0x00, -} diff --git a/components/automate-gateway/api/auth/users/request/users.proto b/components/automate-gateway/api/auth/users/request/users.proto deleted file mode 100644 index 0504ffb9f93..00000000000 --- a/components/automate-gateway/api/auth/users/request/users.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax = "proto3"; - -package chef.automate.api.users.request; -option go_package = "github.com/chef/automate/components/automate-gateway/api/auth/users/request"; - -message GetUsersReq { - -} - -message CreateUser { - string id = 1; - string name = 2; - string email = 3 [deprecated=true]; - string username = 5; - string password = 4; -} - -message UpdateUser { - string id = 1; - string email = 2 [deprecated=true]; - string name = 3; - string password = 4; - string username = 5; -} - -message UpdateSelf { - string id = 1; - string name = 2; - string password = 3; - string username = 4; - string previous_password = 5; -} - -message Email { - string email = 1; -} - -message Username { - string username = 1; -} diff --git a/components/automate-gateway/api/auth/users/request/users.swagger.json b/components/automate-gateway/api/auth/users/request/users.swagger.json deleted file mode 100644 index 8a3889b6eb8..00000000000 --- a/components/automate-gateway/api/auth/users/request/users.swagger.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "components/automate-gateway/api/auth/users/request/users.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": {} -} diff --git a/components/automate-gateway/api/auth/users/response/users.pb.go b/components/automate-gateway/api/auth/users/response/users.pb.go deleted file mode 100644 index cf53c5097aa..00000000000 --- a/components/automate-gateway/api/auth/users/response/users.pb.go +++ /dev/null @@ -1,184 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/response/users.proto - -package response - -import ( - fmt "fmt" - proto "github.com/golang/protobuf/proto" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -type User struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` // Deprecated: Do not use. - Username string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} -func (*User) Descriptor() ([]byte, []int) { - return fileDescriptor_587918623fea3673, []int{0} -} - -func (m *User) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_User.Unmarshal(m, b) -} -func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_User.Marshal(b, m, deterministic) -} -func (m *User) XXX_Merge(src proto.Message) { - xxx_messageInfo_User.Merge(m, src) -} -func (m *User) XXX_Size() int { - return xxx_messageInfo_User.Size(m) -} -func (m *User) XXX_DiscardUnknown() { - xxx_messageInfo_User.DiscardUnknown(m) -} - -var xxx_messageInfo_User proto.InternalMessageInfo - -func (m *User) GetId() string { - if m != nil { - return m.Id - } - return "" -} - -func (m *User) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Deprecated: Do not use. -func (m *User) GetEmail() string { - if m != nil { - return m.Email - } - return "" -} - -func (m *User) GetUsername() string { - if m != nil { - return m.Username - } - return "" -} - -type Users struct { - Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *Users) Reset() { *m = Users{} } -func (m *Users) String() string { return proto.CompactTextString(m) } -func (*Users) ProtoMessage() {} -func (*Users) Descriptor() ([]byte, []int) { - return fileDescriptor_587918623fea3673, []int{1} -} - -func (m *Users) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Users.Unmarshal(m, b) -} -func (m *Users) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Users.Marshal(b, m, deterministic) -} -func (m *Users) XXX_Merge(src proto.Message) { - xxx_messageInfo_Users.Merge(m, src) -} -func (m *Users) XXX_Size() int { - return xxx_messageInfo_Users.Size(m) -} -func (m *Users) XXX_DiscardUnknown() { - xxx_messageInfo_Users.DiscardUnknown(m) -} - -var xxx_messageInfo_Users proto.InternalMessageInfo - -func (m *Users) GetUsers() []*User { - if m != nil { - return m.Users - } - return nil -} - -type DeleteUserResp struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *DeleteUserResp) Reset() { *m = DeleteUserResp{} } -func (m *DeleteUserResp) String() string { return proto.CompactTextString(m) } -func (*DeleteUserResp) ProtoMessage() {} -func (*DeleteUserResp) Descriptor() ([]byte, []int) { - return fileDescriptor_587918623fea3673, []int{2} -} - -func (m *DeleteUserResp) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteUserResp.Unmarshal(m, b) -} -func (m *DeleteUserResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteUserResp.Marshal(b, m, deterministic) -} -func (m *DeleteUserResp) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteUserResp.Merge(m, src) -} -func (m *DeleteUserResp) XXX_Size() int { - return xxx_messageInfo_DeleteUserResp.Size(m) -} -func (m *DeleteUserResp) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteUserResp.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteUserResp proto.InternalMessageInfo - -func init() { - proto.RegisterType((*User)(nil), "chef.automate.api.users.response.User") - proto.RegisterType((*Users)(nil), "chef.automate.api.users.response.Users") - proto.RegisterType((*DeleteUserResp)(nil), "chef.automate.api.users.response.DeleteUserResp") -} - -func init() { - proto.RegisterFile("components/automate-gateway/api/auth/users/response/users.proto", fileDescriptor_587918623fea3673) -} - -var fileDescriptor_587918623fea3673 = []byte{ - // 236 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x90, 0xb1, 0x4b, 0xc4, 0x30, - 0x14, 0xc6, 0x69, 0xaf, 0x15, 0x7d, 0xc2, 0x21, 0x99, 0x82, 0x53, 0xe9, 0x20, 0xb7, 0x98, 0x80, - 0xae, 0x82, 0x70, 0xe8, 0x26, 0x0e, 0x05, 0x17, 0x27, 0xdf, 0xf5, 0x9e, 0xd7, 0xc0, 0xa5, 0x09, - 0x7d, 0x29, 0xe2, 0x7f, 0x2f, 0x49, 0xb8, 0xae, 0xc2, 0x6d, 0x79, 0xbf, 0xe4, 0xf7, 0xbe, 0xf0, - 0xc1, 0x73, 0xef, 0xac, 0x77, 0x23, 0x8d, 0x81, 0x35, 0xce, 0xc1, 0x59, 0x0c, 0x74, 0x7f, 0xc0, - 0x40, 0x3f, 0xf8, 0xab, 0xd1, 0x9b, 0x08, 0x07, 0x3d, 0x33, 0x4d, 0xac, 0x27, 0x62, 0xef, 0x46, - 0xa6, 0x3c, 0x2a, 0x3f, 0xb9, 0xe0, 0x44, 0xd3, 0x0f, 0xf4, 0xad, 0x4e, 0xaa, 0x42, 0x6f, 0x54, - 0xbe, 0x3e, 0xbd, 0x6e, 0xbf, 0xa0, 0xfa, 0x60, 0x9a, 0xc4, 0x1a, 0x4a, 0xb3, 0x97, 0x45, 0x53, - 0x6c, 0xae, 0xba, 0xd2, 0xec, 0x85, 0x80, 0x6a, 0x44, 0x4b, 0xb2, 0x4c, 0x24, 0x9d, 0x85, 0x84, - 0x9a, 0x2c, 0x9a, 0xa3, 0x5c, 0x45, 0xb8, 0x2d, 0x65, 0xd1, 0x65, 0x20, 0x6e, 0xe1, 0x32, 0xee, - 0x4d, 0x46, 0x95, 0x8c, 0x65, 0x6e, 0x5f, 0xa1, 0x8e, 0x09, 0x2c, 0x9e, 0xa0, 0x4e, 0xe1, 0xb2, - 0x68, 0x56, 0x9b, 0xeb, 0x87, 0x3b, 0xf5, 0xdf, 0xe7, 0x54, 0xf4, 0xba, 0x2c, 0xb5, 0x37, 0xb0, - 0x7e, 0xa1, 0x23, 0x05, 0x4a, 0x90, 0xd8, 0x6f, 0xdf, 0x3f, 0xdf, 0x0e, 0x26, 0x0c, 0xf3, 0x4e, - 0xf5, 0xce, 0xea, 0xb8, 0x6c, 0x29, 0x49, 0x9f, 0x51, 0xdc, 0xee, 0x22, 0x75, 0xf6, 0xf8, 0x17, - 0x00, 0x00, 0xff, 0xff, 0x94, 0x9b, 0x7e, 0xd3, 0x76, 0x01, 0x00, 0x00, -} diff --git a/components/automate-gateway/api/auth/users/response/users.proto b/components/automate-gateway/api/auth/users/response/users.proto deleted file mode 100644 index c921f82141d..00000000000 --- a/components/automate-gateway/api/auth/users/response/users.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -package chef.automate.api.users.response; -option go_package = "github.com/chef/automate/components/automate-gateway/api/auth/users/response"; - -message User { - string id = 1; - string name = 2; - string email = 3 [deprecated=true]; - string username = 4; -} - -message Users { - repeated User users = 1; -} - -message DeleteUserResp { - -}; diff --git a/components/automate-gateway/api/auth/users/response/users.swagger.json b/components/automate-gateway/api/auth/users/response/users.swagger.json deleted file mode 100644 index b1a99761019..00000000000 --- a/components/automate-gateway/api/auth/users/response/users.swagger.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "components/automate-gateway/api/auth/users/response/users.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": {} -} diff --git a/components/automate-gateway/api/auth/users/users.pb.go b/components/automate-gateway/api/auth/users/users.pb.go deleted file mode 100644 index 16411b6bb96..00000000000 --- a/components/automate-gateway/api/auth/users/users.pb.go +++ /dev/null @@ -1,420 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/users.proto - -package users - -import ( - context "context" - fmt "fmt" - request "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - response "github.com/chef/automate/components/automate-gateway/api/auth/users/response" - _ "github.com/chef/automate/components/automate-grpc/protoc-gen-policy/api" - _ "github.com/chef/automate/components/automate-grpc/protoc-gen-policy/iam" - proto "github.com/golang/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - math "math" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package - -func init() { - proto.RegisterFile("components/automate-gateway/api/auth/users/users.proto", fileDescriptor_a3ccb1f707d1e4d8) -} - -var fileDescriptor_a3ccb1f707d1e4d8 = []byte{ - // 607 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x95, 0x3f, 0x6f, 0xd3, 0x40, - 0x18, 0xc6, 0xe5, 0x82, 0x42, 0x7a, 0x6d, 0x21, 0x79, 0x1b, 0x52, 0xcb, 0x62, 0xca, 0x50, 0x44, - 0x21, 0x36, 0x02, 0x89, 0x21, 0x03, 0xa0, 0x96, 0x8a, 0x09, 0x81, 0x0a, 0x5d, 0x90, 0x18, 0xae, - 0xce, 0x5b, 0xc7, 0x92, 0xed, 0x73, 0xed, 0xb3, 0x50, 0xc4, 0x9f, 0xc1, 0x53, 0x95, 0x95, 0x6f, - 0xc1, 0x8a, 0xbc, 0x31, 0xf0, 0x1d, 0x58, 0xd8, 0x10, 0x12, 0x13, 0x1f, 0x02, 0x21, 0xfb, 0x92, - 0x9c, 0xad, 0x26, 0xb6, 0xc3, 0x12, 0x29, 0x77, 0xcf, 0xfb, 0xde, 0xf3, 0xbb, 0xc7, 0x77, 0x47, - 0x1e, 0x98, 0xcc, 0xf5, 0x99, 0x87, 0x1e, 0x0f, 0x0d, 0x1a, 0x71, 0xe6, 0x52, 0x8e, 0x7d, 0x8b, - 0x72, 0x7c, 0x4b, 0xc7, 0x06, 0xf5, 0xed, 0x74, 0x70, 0x64, 0x44, 0x21, 0x06, 0xa1, 0xf8, 0xd5, - 0xfd, 0x80, 0x71, 0x06, 0x3b, 0xe6, 0x08, 0x4f, 0xf5, 0x59, 0x85, 0x4e, 0x7d, 0x5b, 0xcf, 0xa6, - 0xb5, 0x1b, 0x16, 0x63, 0x96, 0x83, 0xa2, 0xd6, 0xf3, 0x18, 0xa7, 0xdc, 0x66, 0xde, 0xb4, 0x4c, - 0x7b, 0xb8, 0xc2, 0x72, 0x01, 0x9e, 0x45, 0x18, 0xf2, 0xfc, 0xb2, 0xda, 0xa3, 0x95, 0xea, 0x43, - 0x9f, 0x79, 0x21, 0x16, 0x1a, 0x3c, 0x5e, 0xd8, 0x20, 0xf0, 0x4d, 0x23, 0x9b, 0x37, 0xfb, 0x16, - 0x7a, 0x7d, 0x9f, 0x39, 0xb6, 0x39, 0x5e, 0x82, 0xb0, 0x4a, 0x07, 0x9b, 0xba, 0x17, 0x3b, 0xdc, - 0xfb, 0xbb, 0x49, 0xd6, 0x8f, 0x53, 0x4f, 0xcf, 0x2c, 0x97, 0xc3, 0x17, 0x85, 0x34, 0x9f, 0x22, - 0xcf, 0x06, 0xe0, 0x8e, 0xbe, 0x64, 0x5f, 0xf5, 0xe9, 0x6e, 0xe8, 0x33, 0xe9, 0x11, 0x9e, 0x69, - 0x37, 0x4b, 0xd4, 0x82, 0x5d, 0xcf, 0xb4, 0xbd, 0x17, 0x71, 0xa2, 0x6e, 0x12, 0x92, 0x6e, 0xce, - 0x20, 0x13, 0xc4, 0x89, 0xda, 0x80, 0xcb, 0x01, 0xd2, 0xe1, 0x24, 0x51, 0x37, 0xc8, 0xba, 0x4d, - 0x5d, 0x31, 0x31, 0x49, 0xd4, 0x16, 0x5c, 0x9d, 0xff, 0x1d, 0x38, 0x76, 0xc8, 0xe3, 0xef, 0xbf, - 0x3f, 0xad, 0x6d, 0xc1, 0x46, 0x6e, 0x73, 0xe1, 0x87, 0x42, 0xda, 0x53, 0x2b, 0xfb, 0xe3, 0xf4, - 0xd7, 0xa3, 0x2e, 0xc2, 0xad, 0x4a, 0xfb, 0x33, 0xa9, 0xb6, 0x5b, 0xcf, 0x7b, 0xcf, 0x8f, 0x13, - 0x75, 0x87, 0x5c, 0x97, 0xd6, 0x07, 0xef, 0xa2, 0x69, 0x8f, 0x0f, 0x05, 0x8a, 0x2e, 0xe9, 0x48, - 0xdb, 0x52, 0x33, 0x49, 0xd4, 0x6b, 0xb0, 0x25, 0x67, 0x2c, 0x14, 0x3c, 0x2a, 0x74, 0xf3, 0x1f, - 0x8b, 0x2c, 0x80, 0x6f, 0x0a, 0x21, 0x07, 0x01, 0x52, 0x8e, 0xa9, 0x01, 0xb8, 0x5d, 0xc9, 0x24, - 0xc5, 0xb5, 0xa9, 0xde, 0x2c, 0x08, 0xa4, 0x09, 0x0d, 0x33, 0xeb, 0x74, 0x31, 0x12, 0x80, 0x96, - 0x24, 0x10, 0x22, 0x11, 0x4a, 0x2f, 0x1f, 0x4a, 0x36, 0x74, 0x69, 0xa0, 0xec, 0xc1, 0x1f, 0x85, - 0x74, 0x9e, 0xa0, 0x83, 0xc2, 0xd5, 0xff, 0x05, 0x74, 0xb7, 0x1a, 0x45, 0x2e, 0x71, 0x84, 0xa1, - 0xdf, 0x8b, 0xca, 0xa3, 0x6a, 0x42, 0x63, 0x98, 0x15, 0x94, 0x86, 0x55, 0x40, 0x15, 0x7a, 0x91, - 0xd7, 0xde, 0xb2, 0xbc, 0x7e, 0x29, 0x84, 0x1c, 0xfb, 0xc3, 0xfa, 0x79, 0x49, 0x71, 0xed, 0xbc, - 0x3e, 0x56, 0xa2, 0x45, 0x59, 0xd3, 0xfa, 0x68, 0x42, 0x2f, 0xd0, 0xb4, 0x25, 0x68, 0x32, 0xd0, - 0x9f, 0x73, 0xc6, 0x97, 0xe8, 0x9c, 0xd6, 0x66, 0x4c, 0xc5, 0xb5, 0x19, 0xdf, 0xc7, 0x89, 0x0a, - 0xa4, 0x55, 0x81, 0xa7, 0x11, 0x75, 0x0e, 0x91, 0xb6, 0x2f, 0x22, 0x76, 0xa1, 0x53, 0x9c, 0xcd, - 0x61, 0x6e, 0x6b, 0xed, 0x12, 0xc2, 0xcf, 0x0a, 0xb9, 0x32, 0xbd, 0x50, 0x60, 0xb7, 0x12, 0xef, - 0xd0, 0xa5, 0xb6, 0x53, 0x9b, 0xec, 0x79, 0x9c, 0xa8, 0x1d, 0x02, 0xf9, 0xf4, 0x30, 0x6d, 0x50, - 0xbc, 0x40, 0xb6, 0x49, 0x3b, 0x17, 0x9c, 0x10, 0x2c, 0xb8, 0x3d, 0xce, 0xd7, 0x14, 0xf8, 0xaa, - 0x10, 0x22, 0x3f, 0xfe, 0xda, 0x7e, 0x57, 0x3f, 0x52, 0xaf, 0x4a, 0x9c, 0xe7, 0xcf, 0xd3, 0x12, - 0xef, 0x0b, 0x0e, 0xd3, 0xf9, 0x9a, 0xb2, 0x7f, 0xf8, 0xfa, 0xc0, 0xb2, 0xf9, 0x28, 0x3a, 0xd1, - 0x4d, 0xe6, 0x1a, 0xa9, 0xa7, 0xf9, 0x4b, 0x66, 0xd4, 0x7f, 0x60, 0x4f, 0x1a, 0xd9, 0x73, 0x76, - 0xff, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0x02, 0x98, 0x0a, 0x44, 0x08, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConnInterface - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion6 - -// UsersMgmtClient is the client API for UsersMgmt service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type UsersMgmtClient interface { - GetUsers(ctx context.Context, in *request.GetUsersReq, opts ...grpc.CallOption) (*response.Users, error) - GetUserByUsername(ctx context.Context, in *request.Username, opts ...grpc.CallOption) (*response.User, error) - CreateUser(ctx context.Context, in *request.CreateUser, opts ...grpc.CallOption) (*response.User, error) - DeleteUserByUsername(ctx context.Context, in *request.Username, opts ...grpc.CallOption) (*response.DeleteUserResp, error) - UpdateUser(ctx context.Context, in *request.UpdateUser, opts ...grpc.CallOption) (*response.User, error) - UpdateSelf(ctx context.Context, in *request.UpdateSelf, opts ...grpc.CallOption) (*response.User, error) - // deprecated API - // - // Deprecated: Do not use. - GetUser(ctx context.Context, in *request.Email, opts ...grpc.CallOption) (*response.User, error) - // - // Deprecated: Do not use. - DeleteUser(ctx context.Context, in *request.Email, opts ...grpc.CallOption) (*response.DeleteUserResp, error) -} - -type usersMgmtClient struct { - cc grpc.ClientConnInterface -} - -func NewUsersMgmtClient(cc grpc.ClientConnInterface) UsersMgmtClient { - return &usersMgmtClient{cc} -} - -func (c *usersMgmtClient) GetUsers(ctx context.Context, in *request.GetUsersReq, opts ...grpc.CallOption) (*response.Users, error) { - out := new(response.Users) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/GetUsers", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *usersMgmtClient) GetUserByUsername(ctx context.Context, in *request.Username, opts ...grpc.CallOption) (*response.User, error) { - out := new(response.User) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/GetUserByUsername", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *usersMgmtClient) CreateUser(ctx context.Context, in *request.CreateUser, opts ...grpc.CallOption) (*response.User, error) { - out := new(response.User) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/CreateUser", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *usersMgmtClient) DeleteUserByUsername(ctx context.Context, in *request.Username, opts ...grpc.CallOption) (*response.DeleteUserResp, error) { - out := new(response.DeleteUserResp) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/DeleteUserByUsername", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *usersMgmtClient) UpdateUser(ctx context.Context, in *request.UpdateUser, opts ...grpc.CallOption) (*response.User, error) { - out := new(response.User) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/UpdateUser", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *usersMgmtClient) UpdateSelf(ctx context.Context, in *request.UpdateSelf, opts ...grpc.CallOption) (*response.User, error) { - out := new(response.User) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/UpdateSelf", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Deprecated: Do not use. -func (c *usersMgmtClient) GetUser(ctx context.Context, in *request.Email, opts ...grpc.CallOption) (*response.User, error) { - out := new(response.User) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/GetUser", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// Deprecated: Do not use. -func (c *usersMgmtClient) DeleteUser(ctx context.Context, in *request.Email, opts ...grpc.CallOption) (*response.DeleteUserResp, error) { - out := new(response.DeleteUserResp) - err := c.cc.Invoke(ctx, "/chef.automate.api.users.UsersMgmt/DeleteUser", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// UsersMgmtServer is the server API for UsersMgmt service. -type UsersMgmtServer interface { - GetUsers(context.Context, *request.GetUsersReq) (*response.Users, error) - GetUserByUsername(context.Context, *request.Username) (*response.User, error) - CreateUser(context.Context, *request.CreateUser) (*response.User, error) - DeleteUserByUsername(context.Context, *request.Username) (*response.DeleteUserResp, error) - UpdateUser(context.Context, *request.UpdateUser) (*response.User, error) - UpdateSelf(context.Context, *request.UpdateSelf) (*response.User, error) - // deprecated API - // - // Deprecated: Do not use. - GetUser(context.Context, *request.Email) (*response.User, error) - // - // Deprecated: Do not use. - DeleteUser(context.Context, *request.Email) (*response.DeleteUserResp, error) -} - -// UnimplementedUsersMgmtServer can be embedded to have forward compatible implementations. -type UnimplementedUsersMgmtServer struct { -} - -func (*UnimplementedUsersMgmtServer) GetUsers(ctx context.Context, req *request.GetUsersReq) (*response.Users, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUsers not implemented") -} -func (*UnimplementedUsersMgmtServer) GetUserByUsername(ctx context.Context, req *request.Username) (*response.User, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUserByUsername not implemented") -} -func (*UnimplementedUsersMgmtServer) CreateUser(ctx context.Context, req *request.CreateUser) (*response.User, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateUser not implemented") -} -func (*UnimplementedUsersMgmtServer) DeleteUserByUsername(ctx context.Context, req *request.Username) (*response.DeleteUserResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteUserByUsername not implemented") -} -func (*UnimplementedUsersMgmtServer) UpdateUser(ctx context.Context, req *request.UpdateUser) (*response.User, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") -} -func (*UnimplementedUsersMgmtServer) UpdateSelf(ctx context.Context, req *request.UpdateSelf) (*response.User, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateSelf not implemented") -} -func (*UnimplementedUsersMgmtServer) GetUser(ctx context.Context, req *request.Email) (*response.User, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUser not implemented") -} -func (*UnimplementedUsersMgmtServer) DeleteUser(ctx context.Context, req *request.Email) (*response.DeleteUserResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteUser not implemented") -} - -func RegisterUsersMgmtServer(s *grpc.Server, srv UsersMgmtServer) { - s.RegisterService(&_UsersMgmt_serviceDesc, srv) -} - -func _UsersMgmt_GetUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.GetUsersReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).GetUsers(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/GetUsers", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).GetUsers(ctx, req.(*request.GetUsersReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_GetUserByUsername_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.Username) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).GetUserByUsername(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/GetUserByUsername", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).GetUserByUsername(ctx, req.(*request.Username)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_CreateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.CreateUser) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).CreateUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/CreateUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).CreateUser(ctx, req.(*request.CreateUser)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_DeleteUserByUsername_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.Username) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).DeleteUserByUsername(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/DeleteUserByUsername", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).DeleteUserByUsername(ctx, req.(*request.Username)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_UpdateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.UpdateUser) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).UpdateUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/UpdateUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).UpdateUser(ctx, req.(*request.UpdateUser)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_UpdateSelf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.UpdateSelf) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).UpdateSelf(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/UpdateSelf", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).UpdateSelf(ctx, req.(*request.UpdateSelf)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_GetUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.Email) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).GetUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/GetUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).GetUser(ctx, req.(*request.Email)) - } - return interceptor(ctx, in, info, handler) -} - -func _UsersMgmt_DeleteUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(request.Email) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UsersMgmtServer).DeleteUser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/chef.automate.api.users.UsersMgmt/DeleteUser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UsersMgmtServer).DeleteUser(ctx, req.(*request.Email)) - } - return interceptor(ctx, in, info, handler) -} - -var _UsersMgmt_serviceDesc = grpc.ServiceDesc{ - ServiceName: "chef.automate.api.users.UsersMgmt", - HandlerType: (*UsersMgmtServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetUsers", - Handler: _UsersMgmt_GetUsers_Handler, - }, - { - MethodName: "GetUserByUsername", - Handler: _UsersMgmt_GetUserByUsername_Handler, - }, - { - MethodName: "CreateUser", - Handler: _UsersMgmt_CreateUser_Handler, - }, - { - MethodName: "DeleteUserByUsername", - Handler: _UsersMgmt_DeleteUserByUsername_Handler, - }, - { - MethodName: "UpdateUser", - Handler: _UsersMgmt_UpdateUser_Handler, - }, - { - MethodName: "UpdateSelf", - Handler: _UsersMgmt_UpdateSelf_Handler, - }, - { - MethodName: "GetUser", - Handler: _UsersMgmt_GetUser_Handler, - }, - { - MethodName: "DeleteUser", - Handler: _UsersMgmt_DeleteUser_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "components/automate-gateway/api/auth/users/users.proto", -} diff --git a/components/automate-gateway/api/auth/users/users.pb.gw.go b/components/automate-gateway/api/auth/users/users.pb.gw.go deleted file mode 100644 index f51e2e3448d..00000000000 --- a/components/automate-gateway/api/auth/users/users.pb.gw.go +++ /dev/null @@ -1,650 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/users.proto - -/* -Package users is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package users - -import ( - "context" - "io" - "net/http" - - "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage - -func request_UsersMgmt_GetUsers_0(ctx context.Context, marshaler runtime.Marshaler, client UsersMgmtClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.GetUsersReq - var metadata runtime.ServerMetadata - - msg, err := client.GetUsers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_UsersMgmt_GetUsers_0(ctx context.Context, marshaler runtime.Marshaler, server UsersMgmtServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.GetUsersReq - var metadata runtime.ServerMetadata - - msg, err := server.GetUsers(ctx, &protoReq) - return msg, metadata, err - -} - -func request_UsersMgmt_GetUserByUsername_0(ctx context.Context, marshaler runtime.Marshaler, client UsersMgmtClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.Username - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := client.GetUserByUsername(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_UsersMgmt_GetUserByUsername_0(ctx context.Context, marshaler runtime.Marshaler, server UsersMgmtServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.Username - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := server.GetUserByUsername(ctx, &protoReq) - return msg, metadata, err - -} - -func request_UsersMgmt_CreateUser_0(ctx context.Context, marshaler runtime.Marshaler, client UsersMgmtClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.CreateUser - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.CreateUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_UsersMgmt_CreateUser_0(ctx context.Context, marshaler runtime.Marshaler, server UsersMgmtServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.CreateUser - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.CreateUser(ctx, &protoReq) - return msg, metadata, err - -} - -func request_UsersMgmt_DeleteUserByUsername_0(ctx context.Context, marshaler runtime.Marshaler, client UsersMgmtClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.Username - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := client.DeleteUserByUsername(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_UsersMgmt_DeleteUserByUsername_0(ctx context.Context, marshaler runtime.Marshaler, server UsersMgmtServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.Username - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := server.DeleteUserByUsername(ctx, &protoReq) - return msg, metadata, err - -} - -func request_UsersMgmt_UpdateUser_0(ctx context.Context, marshaler runtime.Marshaler, client UsersMgmtClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.UpdateUser - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := client.UpdateUser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_UsersMgmt_UpdateUser_0(ctx context.Context, marshaler runtime.Marshaler, server UsersMgmtServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.UpdateUser - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := server.UpdateUser(ctx, &protoReq) - return msg, metadata, err - -} - -func request_UsersMgmt_UpdateSelf_0(ctx context.Context, marshaler runtime.Marshaler, client UsersMgmtClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.UpdateSelf - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := client.UpdateSelf(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_UsersMgmt_UpdateSelf_0(ctx context.Context, marshaler runtime.Marshaler, server UsersMgmtServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq request.UpdateSelf - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["username"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "username") - } - - protoReq.Username, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "username", err) - } - - msg, err := server.UpdateSelf(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterUsersMgmtHandlerServer registers the http handlers for service UsersMgmt to "mux". -// UnaryRPC :call UsersMgmtServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -func RegisterUsersMgmtHandlerServer(ctx context.Context, mux *runtime.ServeMux, server UsersMgmtServer) error { - - mux.Handle("GET", pattern_UsersMgmt_GetUsers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_UsersMgmt_GetUsers_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_GetUsers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_UsersMgmt_GetUserByUsername_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_UsersMgmt_GetUserByUsername_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_GetUserByUsername_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_UsersMgmt_CreateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_UsersMgmt_CreateUser_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_CreateUser_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_UsersMgmt_DeleteUserByUsername_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_UsersMgmt_DeleteUserByUsername_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_DeleteUserByUsername_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_UsersMgmt_UpdateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_UsersMgmt_UpdateUser_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_UpdateUser_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_UsersMgmt_UpdateSelf_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_UsersMgmt_UpdateSelf_0(rctx, inboundMarshaler, server, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_UpdateSelf_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterUsersMgmtHandlerFromEndpoint is same as RegisterUsersMgmtHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterUsersMgmtHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterUsersMgmtHandler(ctx, mux, conn) -} - -// RegisterUsersMgmtHandler registers the http handlers for service UsersMgmt to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterUsersMgmtHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterUsersMgmtHandlerClient(ctx, mux, NewUsersMgmtClient(conn)) -} - -// RegisterUsersMgmtHandlerClient registers the http handlers for service UsersMgmt -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "UsersMgmtClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "UsersMgmtClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "UsersMgmtClient" to call the correct interceptors. -func RegisterUsersMgmtHandlerClient(ctx context.Context, mux *runtime.ServeMux, client UsersMgmtClient) error { - - mux.Handle("GET", pattern_UsersMgmt_GetUsers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_UsersMgmt_GetUsers_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_GetUsers_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_UsersMgmt_GetUserByUsername_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_UsersMgmt_GetUserByUsername_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_GetUserByUsername_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_UsersMgmt_CreateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_UsersMgmt_CreateUser_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_CreateUser_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("DELETE", pattern_UsersMgmt_DeleteUserByUsername_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_UsersMgmt_DeleteUserByUsername_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_DeleteUserByUsername_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_UsersMgmt_UpdateUser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_UsersMgmt_UpdateUser_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_UpdateUser_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("PUT", pattern_UsersMgmt_UpdateSelf_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_UsersMgmt_UpdateSelf_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_UsersMgmt_UpdateSelf_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_UsersMgmt_GetUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"auth", "users"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_UsersMgmt_GetUserByUsername_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"auth", "users", "username"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_UsersMgmt_CreateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"auth", "users"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_UsersMgmt_DeleteUserByUsername_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"auth", "users", "username"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_UsersMgmt_UpdateUser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"auth", "users", "username"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_UsersMgmt_UpdateSelf_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"users", "username"}, "", runtime.AssumeColonVerbOpt(true))) -) - -var ( - forward_UsersMgmt_GetUsers_0 = runtime.ForwardResponseMessage - - forward_UsersMgmt_GetUserByUsername_0 = runtime.ForwardResponseMessage - - forward_UsersMgmt_CreateUser_0 = runtime.ForwardResponseMessage - - forward_UsersMgmt_DeleteUserByUsername_0 = runtime.ForwardResponseMessage - - forward_UsersMgmt_UpdateUser_0 = runtime.ForwardResponseMessage - - forward_UsersMgmt_UpdateSelf_0 = runtime.ForwardResponseMessage -) diff --git a/components/automate-gateway/api/auth/users/users.pb.mock.go b/components/automate-gateway/api/auth/users/users.pb.mock.go deleted file mode 100644 index 86439735436..00000000000 --- a/components/automate-gateway/api/auth/users/users.pb.mock.go +++ /dev/null @@ -1,150 +0,0 @@ -// Code generated by protoc-gen-grpc-mock. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/users.proto - -package users - -import ( - "context" - - request "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - response "github.com/chef/automate/components/automate-gateway/api/auth/users/response" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -// verify that the mock satisfies the UsersMgmtServer interface (at compile time) -var _ UsersMgmtServer = &UsersMgmtServerMock{} - -// NewUsersMgmtServerMock gives you a fresh instance of UsersMgmtServerMock. -func NewUsersMgmtServerMock() *UsersMgmtServerMock { - return &UsersMgmtServerMock{validateRequests: true} -} - -// NewUsersMgmtServerMockWithoutValidation gives you a fresh instance of -// UsersMgmtServerMock which does not attempt to validate requests before passing -// them to their respective '*Func'. -func NewUsersMgmtServerMockWithoutValidation() *UsersMgmtServerMock { - return &UsersMgmtServerMock{} -} - -// UsersMgmtServerMock is the mock-what-you-want struct that stubs all not-overridden -// methods with "not implemented" returns -type UsersMgmtServerMock struct { - validateRequests bool - GetUsersFunc func(context.Context, *request.GetUsersReq) (*response.Users, error) - GetUserByUsernameFunc func(context.Context, *request.Username) (*response.User, error) - CreateUserFunc func(context.Context, *request.CreateUser) (*response.User, error) - DeleteUserByUsernameFunc func(context.Context, *request.Username) (*response.DeleteUserResp, error) - UpdateUserFunc func(context.Context, *request.UpdateUser) (*response.User, error) - UpdateSelfFunc func(context.Context, *request.UpdateSelf) (*response.User, error) - GetUserFunc func(context.Context, *request.Email) (*response.User, error) - DeleteUserFunc func(context.Context, *request.Email) (*response.DeleteUserResp, error) -} - -func (m *UsersMgmtServerMock) GetUsers(ctx context.Context, req *request.GetUsersReq) (*response.Users, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.GetUsersFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'GetUsers' not implemented") -} - -func (m *UsersMgmtServerMock) GetUserByUsername(ctx context.Context, req *request.Username) (*response.User, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.GetUserByUsernameFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'GetUserByUsername' not implemented") -} - -func (m *UsersMgmtServerMock) CreateUser(ctx context.Context, req *request.CreateUser) (*response.User, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.CreateUserFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'CreateUser' not implemented") -} - -func (m *UsersMgmtServerMock) DeleteUserByUsername(ctx context.Context, req *request.Username) (*response.DeleteUserResp, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.DeleteUserByUsernameFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'DeleteUserByUsername' not implemented") -} - -func (m *UsersMgmtServerMock) UpdateUser(ctx context.Context, req *request.UpdateUser) (*response.User, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.UpdateUserFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'UpdateUser' not implemented") -} - -func (m *UsersMgmtServerMock) UpdateSelf(ctx context.Context, req *request.UpdateSelf) (*response.User, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.UpdateSelfFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'UpdateSelf' not implemented") -} - -func (m *UsersMgmtServerMock) GetUser(ctx context.Context, req *request.Email) (*response.User, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.GetUserFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'GetUser' not implemented") -} - -func (m *UsersMgmtServerMock) DeleteUser(ctx context.Context, req *request.Email) (*response.DeleteUserResp, error) { - if msg, ok := interface{}(req).(interface{ Validate() error }); m.validateRequests && ok { - if err := msg.Validate(); err != nil { - return nil, status.Error(codes.InvalidArgument, err.Error()) - } - } - if f := m.DeleteUserFunc; f != nil { - return f(ctx, req) - } - return nil, status.Error(codes.Internal, "mock: 'DeleteUser' not implemented") -} - -// Reset resets all overridden functions -func (m *UsersMgmtServerMock) Reset() { - m.GetUsersFunc = nil - m.GetUserByUsernameFunc = nil - m.CreateUserFunc = nil - m.DeleteUserByUsernameFunc = nil - m.UpdateUserFunc = nil - m.UpdateSelfFunc = nil - m.GetUserFunc = nil - m.DeleteUserFunc = nil -} diff --git a/components/automate-gateway/api/auth/users/users.pb.policy-v1.go b/components/automate-gateway/api/auth/users/users.pb.policy-v1.go deleted file mode 100644 index 239ff659da7..00000000000 --- a/components/automate-gateway/api/auth/users/users.pb.policy-v1.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by protoc-gen-policy. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/users.proto - -package users - -import ( - request "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - policy "github.com/chef/automate/components/automate-gateway/api/authz/policy" -) - -func init() { - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/GetUsers", "auth:users", "read", "GET", "/auth/users", func(unexpandedResource string, input interface{}) string { - return unexpandedResource - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/GetUserByUsername", "auth:users:{username}", "read", "GET", "/auth/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Username); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "username": - return m.Username - default: - return "" - } - }) - } - return "" - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/CreateUser", "auth:users", "create", "POST", "/auth/users", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.CreateUser); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "id": - return m.Id - case "name": - return m.Name - case "email": - return m.Email - case "username": - return m.Username - case "password": - return m.Password - default: - return "" - } - }) - } - return "" - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/DeleteUserByUsername", "auth:users:{username}", "delete", "DELETE", "/auth/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Username); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "username": - return m.Username - default: - return "" - } - }) - } - return "" - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/UpdateUser", "auth:users:{username}", "update", "PUT", "/auth/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.UpdateUser); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "id": - return m.Id - case "email": - return m.Email - case "name": - return m.Name - case "password": - return m.Password - case "username": - return m.Username - default: - return "" - } - }) - } - return "" - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/UpdateSelf", "users:{username}", "update", "PUT", "/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.UpdateSelf); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "id": - return m.Id - case "name": - return m.Name - case "password": - return m.Password - case "username": - return m.Username - case "previous_password": - return m.PreviousPassword - default: - return "" - } - }) - } - return "" - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/GetUser", "auth:users:{email}", "read", "", "", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Email); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "email": - return m.Email - default: - return "" - } - }) - } - return "" - }) - policy.MapMethodTo("/chef.automate.api.users.UsersMgmt/DeleteUser", "auth:users:{email}", "delete", "", "", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Email); ok { - return policy.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "email": - return m.Email - default: - return "" - } - }) - } - return "" - }) -} diff --git a/components/automate-gateway/api/auth/users/users.pb.policy-v2.go b/components/automate-gateway/api/auth/users/users.pb.policy-v2.go deleted file mode 100644 index c0d2e270880..00000000000 --- a/components/automate-gateway/api/auth/users/users.pb.policy-v2.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by protoc-gen-policy. DO NOT EDIT. -// source: components/automate-gateway/api/auth/users/users.proto - -package users - -import ( - request "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - policyv2 "github.com/chef/automate/components/automate-gateway/authz/policy_v2" -) - -func init() { - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/GetUsers", "iam:users", "iam:users:list", "GET", "/auth/users", func(unexpandedResource string, input interface{}) string { - return unexpandedResource - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/GetUserByUsername", "iam:users:{username}", "iam:users:get", "GET", "/auth/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Username); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "username": - return m.Username - default: - return "" - } - }) - } - return "" - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/CreateUser", "iam:users", "iam:users:create", "POST", "/auth/users", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.CreateUser); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "id": - return m.Id - case "name": - return m.Name - case "email": - return m.Email - case "username": - return m.Username - case "password": - return m.Password - default: - return "" - } - }) - } - return "" - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/DeleteUserByUsername", "iam:users:{username}", "iam:users:delete", "DELETE", "/auth/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Username); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "username": - return m.Username - default: - return "" - } - }) - } - return "" - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/UpdateUser", "iam:users:{username}", "iam:users:update", "PUT", "/auth/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.UpdateUser); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "id": - return m.Id - case "email": - return m.Email - case "name": - return m.Name - case "password": - return m.Password - case "username": - return m.Username - default: - return "" - } - }) - } - return "" - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/UpdateSelf", "iam:usersSelf:{username}", "iam:usersSelf:update", "PUT", "/users/{username}", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.UpdateSelf); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "id": - return m.Id - case "name": - return m.Name - case "password": - return m.Password - case "username": - return m.Username - case "previous_password": - return m.PreviousPassword - default: - return "" - } - }) - } - return "" - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/GetUser", "iam:users:{email}", "iam:users:get", "", "", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Email); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "email": - return m.Email - default: - return "" - } - }) - } - return "" - }) - policyv2.MapMethodTo("/chef.automate.api.users.UsersMgmt/DeleteUser", "iam:users:{email}", "iam:users:delete", "", "", func(unexpandedResource string, input interface{}) string { - if m, ok := input.(*request.Email); ok { - return policyv2.ExpandParameterizedResource(unexpandedResource, func(want string) string { - switch want { - case "email": - return m.Email - default: - return "" - } - }) - } - return "" - }) -} diff --git a/components/automate-gateway/api/auth/users/users.proto b/components/automate-gateway/api/auth/users/users.proto deleted file mode 100644 index 1f81caf5d54..00000000000 --- a/components/automate-gateway/api/auth/users/users.proto +++ /dev/null @@ -1,84 +0,0 @@ -syntax = "proto3"; - -package chef.automate.api.users; -option go_package = "github.com/chef/automate/components/automate-gateway/api/auth/users"; - -import "google/api/annotations.proto"; -import "components/automate-gateway/api/auth/users/request/users.proto"; -import "components/automate-gateway/api/auth/users/response/users.proto"; -// for option (chef.automate.api.policy) -import "components/automate-grpc/protoc-gen-policy/api/annotations.proto"; -// for option (chef.automate.api.iam.policy) -import "components/automate-grpc/protoc-gen-policy/iam/annotations.proto"; - - -service UsersMgmt { - rpc GetUsers (users.request.GetUsersReq) returns (users.response.Users) { - option (google.api.http).get = "/auth/users"; - option (chef.automate.api.policy).resource = "auth:users"; - option (chef.automate.api.policy).action = "read"; - option (chef.automate.api.iam.policy).resource = "iam:users"; - option (chef.automate.api.iam.policy).action = "iam:users:list"; - } - - rpc GetUserByUsername (users.request.Username) returns (users.response.User) { - option (google.api.http).get = "/auth/users/{username}"; - option (chef.automate.api.policy).resource = "auth:users:{username}"; - option (chef.automate.api.policy).action = "read"; - option (chef.automate.api.iam.policy).resource = "iam:users:{username}"; - option (chef.automate.api.iam.policy).action = "iam:users:get"; - } - - rpc CreateUser (users.request.CreateUser) returns (users.response.User) { - option (google.api.http).post = "/auth/users"; - option (google.api.http).body = "*"; - option (chef.automate.api.policy).resource = "auth:users"; - option (chef.automate.api.policy).action = "create"; - option (chef.automate.api.iam.policy).resource = "iam:users"; - option (chef.automate.api.iam.policy).action = "iam:users:create"; - } - - rpc DeleteUserByUsername (users.request.Username) returns (users.response.DeleteUserResp) { - option (google.api.http).delete = "/auth/users/{username}"; - option (chef.automate.api.policy).resource = "auth:users:{username}"; - option (chef.automate.api.policy).action = "delete"; - option (chef.automate.api.iam.policy).resource = "iam:users:{username}"; - option (chef.automate.api.iam.policy).action = "iam:users:delete"; - } - - rpc UpdateUser (users.request.UpdateUser) returns (users.response.User) { - option (google.api.http).put = "/auth/users/{username}"; - option (google.api.http).body = "*"; - option (chef.automate.api.policy).resource = "auth:users:{username}"; - option (chef.automate.api.policy).action = "update"; - option (chef.automate.api.iam.policy).resource = "iam:users:{username}"; - option (chef.automate.api.iam.policy).action = "iam:users:update"; - } - - rpc UpdateSelf (users.request.UpdateSelf) returns (users.response.User) { - option (google.api.http).put = "/users/{username}"; - option (google.api.http).body = "*"; - // The users namespace, as opposed for auth:users, is for actions users - // are allowed to perform on themselves by default without admin permissions. - option (chef.automate.api.policy).resource = "users:{username}"; - option (chef.automate.api.policy).action = "update"; - option (chef.automate.api.iam.policy).resource = "iam:usersSelf:{username}"; - option (chef.automate.api.iam.policy).action = "iam:usersSelf:update"; - } - - // deprecated API - rpc GetUser (users.request.Email) returns (users.response.User) { - option deprecated = true; - option (chef.automate.api.policy).resource = "auth:users:{email}"; - option (chef.automate.api.policy).action = "read"; - option (chef.automate.api.iam.policy).resource = "iam:users:{email}"; - option (chef.automate.api.iam.policy).action = "iam:users:get"; - } - rpc DeleteUser (users.request.Email) returns (users.response.DeleteUserResp) { - option deprecated = true; - option (chef.automate.api.policy).resource = "auth:users:{email}"; - option (chef.automate.api.policy).action = "delete"; - option (chef.automate.api.iam.policy).resource = "iam:users:{email}"; - option (chef.automate.api.iam.policy).action = "iam:users:delete"; - } -} diff --git a/components/automate-gateway/api/auth/users/users.swagger.json b/components/automate-gateway/api/auth/users/users.swagger.json deleted file mode 100644 index 5ad1467acc3..00000000000 --- a/components/automate-gateway/api/auth/users/users.swagger.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "components/automate-gateway/api/auth/users/users.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/auth/users": { - "get": { - "operationId": "GetUsers", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.Users" - } - } - }, - "tags": [ - "UsersMgmt" - ] - }, - "post": { - "operationId": "CreateUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/chef.automate.api.users.request.CreateUser" - } - } - ], - "tags": [ - "UsersMgmt" - ] - } - }, - "/auth/users/{username}": { - "get": { - "operationId": "GetUserByUsername", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "UsersMgmt" - ] - }, - "delete": { - "operationId": "DeleteUserByUsername", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.DeleteUserResp" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "UsersMgmt" - ] - }, - "put": { - "operationId": "UpdateUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/chef.automate.api.users.request.UpdateUser" - } - } - ], - "tags": [ - "UsersMgmt" - ] - } - }, - "/users/{username}": { - "put": { - "operationId": "UpdateSelf", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/chef.automate.api.users.request.UpdateSelf" - } - } - ], - "tags": [ - "UsersMgmt" - ] - } - } - }, - "definitions": { - "chef.automate.api.users.request.CreateUser": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "email": { - "type": "string" - }, - "username": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "chef.automate.api.users.request.UpdateSelf": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "previous_password": { - "type": "string" - } - } - }, - "chef.automate.api.users.request.UpdateUser": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "chef.automate.api.users.response.DeleteUserResp": { - "type": "object" - }, - "chef.automate.api.users.response.User": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "email": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "chef.automate.api.users.response.Users": { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - } - } - } -} diff --git a/components/automate-gateway/api/auth_users_request_users.pb.swagger.go b/components/automate-gateway/api/auth_users_request_users.pb.swagger.go deleted file mode 100644 index 2be07418072..00000000000 --- a/components/automate-gateway/api/auth_users_request_users.pb.swagger.go +++ /dev/null @@ -1,20 +0,0 @@ -package api - -func init() { - Swagger.Add("auth_users_request_users", `{ - "swagger": "2.0", - "info": { - "title": "components/automate-gateway/api/auth/users/request/users.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": {} -} -`) -} diff --git a/components/automate-gateway/api/auth_users_response_users.pb.swagger.go b/components/automate-gateway/api/auth_users_response_users.pb.swagger.go deleted file mode 100644 index aa00f97f463..00000000000 --- a/components/automate-gateway/api/auth_users_response_users.pb.swagger.go +++ /dev/null @@ -1,20 +0,0 @@ -package api - -func init() { - Swagger.Add("auth_users_response_users", `{ - "swagger": "2.0", - "info": { - "title": "components/automate-gateway/api/auth/users/response/users.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": {}, - "definitions": {} -} -`) -} diff --git a/components/automate-gateway/api/auth_users_users.pb.swagger.go b/components/automate-gateway/api/auth_users_users.pb.swagger.go deleted file mode 100644 index a772a81c34a..00000000000 --- a/components/automate-gateway/api/auth_users_users.pb.swagger.go +++ /dev/null @@ -1,261 +0,0 @@ -package api - -func init() { - Swagger.Add("auth_users_users", `{ - "swagger": "2.0", - "info": { - "title": "components/automate-gateway/api/auth/users/users.proto", - "version": "version not set" - }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/auth/users": { - "get": { - "operationId": "GetUsers", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.Users" - } - } - }, - "tags": [ - "UsersMgmt" - ] - }, - "post": { - "operationId": "CreateUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/chef.automate.api.users.request.CreateUser" - } - } - ], - "tags": [ - "UsersMgmt" - ] - } - }, - "/auth/users/{username}": { - "get": { - "operationId": "GetUserByUsername", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "UsersMgmt" - ] - }, - "delete": { - "operationId": "DeleteUserByUsername", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.DeleteUserResp" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "UsersMgmt" - ] - }, - "put": { - "operationId": "UpdateUser", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/chef.automate.api.users.request.UpdateUser" - } - } - ], - "tags": [ - "UsersMgmt" - ] - } - }, - "/users/{username}": { - "put": { - "operationId": "UpdateSelf", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - }, - "parameters": [ - { - "name": "username", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/chef.automate.api.users.request.UpdateSelf" - } - } - ], - "tags": [ - "UsersMgmt" - ] - } - } - }, - "definitions": { - "chef.automate.api.users.request.CreateUser": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "email": { - "type": "string" - }, - "username": { - "type": "string" - }, - "password": { - "type": "string" - } - } - }, - "chef.automate.api.users.request.UpdateSelf": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - }, - "previous_password": { - "type": "string" - } - } - }, - "chef.automate.api.users.request.UpdateUser": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "email": { - "type": "string" - }, - "name": { - "type": "string" - }, - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "chef.automate.api.users.response.DeleteUserResp": { - "type": "object" - }, - "chef.automate.api.users.response.User": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "email": { - "type": "string" - }, - "username": { - "type": "string" - } - } - }, - "chef.automate.api.users.response.Users": { - "type": "object", - "properties": { - "users": { - "type": "array", - "items": { - "$ref": "#/definitions/chef.automate.api.users.response.User" - } - } - } - } - } -} -`) -} diff --git a/components/automate-gateway/gateway/services.go b/components/automate-gateway/gateway/services.go index 9372150d78f..e2c01beb888 100644 --- a/components/automate-gateway/gateway/services.go +++ b/components/automate-gateway/gateway/services.go @@ -33,7 +33,6 @@ import ( deploy_api "github.com/chef/automate/api/interservice/deployment" swagger "github.com/chef/automate/components/automate-gateway/api" pb_teams "github.com/chef/automate/components/automate-gateway/api/auth/teams" - pb_users "github.com/chef/automate/components/automate-gateway/api/auth/users" pb_authz "github.com/chef/automate/components/automate-gateway/api/authz" policy "github.com/chef/automate/components/automate-gateway/api/authz/policy" pb_profiles "github.com/chef/automate/components/automate-gateway/api/compliance/profiles" @@ -43,6 +42,7 @@ import ( pb_deployment "github.com/chef/automate/components/automate-gateway/api/deployment" pb_eventfeed "github.com/chef/automate/components/automate-gateway/api/event_feed" pb_gateway "github.com/chef/automate/components/automate-gateway/api/gateway" + pb_iam "github.com/chef/automate/components/automate-gateway/api/iam/v2" pb_legacy "github.com/chef/automate/components/automate-gateway/api/legacy" pb_license "github.com/chef/automate/components/automate-gateway/api/license" pb_notifications "github.com/chef/automate/components/automate-gateway/api/notifications" @@ -204,7 +204,6 @@ func (s *Server) RegisterGRPCServices(grpcServer *grpc.Server) error { if err != nil { return errors.Wrap(err, "create client for users mgmt service") } - pb_users.RegisterUsersMgmtServer(grpcServer, handler.NewUsersMgmtServer(usersMgmtClient)) // IAM v2 uses the same client pb_iam.RegisterUsersServer(grpcServer, handler_users.NewServer(usersMgmtClient)) @@ -352,8 +351,6 @@ func unversionedRESTMux(grpcURI string, dopts []grpc.DialOption) (http.Handler, "gateway": pb_gateway.RegisterGatewayHandlerFromEndpoint, "legacy": pb_legacy.RegisterLegacyDataCollectorHandlerFromEndpoint, "license": pb_license.RegisterLicenseHandlerFromEndpoint, - "auth tokens": pb_iam.RegisterTokensHandlerFromEndpoint, - "auth users": pb_users.RegisterUsersMgmtHandlerFromEndpoint, "authz": pb_authz.RegisterAuthorizationHandlerFromEndpoint, "secrets": pb_secrets.RegisterSecretsServiceHandlerFromEndpoint, "cc_reporting": pb_cc_reporting.RegisterReportingServiceHandlerFromEndpoint, diff --git a/components/automate-gateway/handler/users.go b/components/automate-gateway/handler/users.go deleted file mode 100644 index 2315b20a36b..00000000000 --- a/components/automate-gateway/handler/users.go +++ /dev/null @@ -1,151 +0,0 @@ -package handler - -import ( - "context" - - // upstream definitions - "github.com/chef/automate/api/interservice/local_user" - - localUserReq "github.com/chef/automate/components/automate-gateway/api/auth/users/request" - localUserRes "github.com/chef/automate/components/automate-gateway/api/auth/users/response" -) - -// UsersServer stores client to an upstream auth service -type UsersServer struct { - client local_user.UsersMgmtClient -} - -// NewUsersMgmtServer initializes Server with client -func NewUsersMgmtServer(client local_user.UsersMgmtClient) *UsersServer { - return &UsersServer{ - client: client, - } -} - -// TODO 2018/04/23 (sr): We've decided to reject Dex's focus on users-identified -// -by-email, and instead call the field `username` in our system. So, while it -// would make much sense to do that translation, "what we call username, dex -// calls email" in local-user-service, we _now_ merely want to fix this in our -// API _quickly_. - -// CreateUser posts a user upstream -func (a *UsersServer) CreateUser(ctx context.Context, r *localUserReq.CreateUser) (*localUserRes.User, error) { - username, useEmail := emailUnlessUsername(r.Email, r.Username) - req := &local_user.CreateUserReq{ - Id: r.Id, - Name: r.Name, - Email: username, - Password: r.Password, - } - res, err := a.client.CreateUser(ctx, req) - if err != nil { - return nil, err - } - return fromUpstreamUser(res, useEmail), nil -} - -// UpdateUser updates an existing user. -func (a *UsersServer) UpdateUser(ctx context.Context, r *localUserReq.UpdateUser) (*localUserRes.User, error) { - username, useEmail := emailUnlessUsername(r.Email, r.Username) - req := &local_user.UpdateUserReq{ - Id: r.Id, - Name: r.Name, - Email: username, - Password: r.Password, - } - res, err := a.client.UpdateUser(ctx, req) - if err != nil { - return nil, err - } - return fromUpstreamUser(res, useEmail), nil -} - -// UpdateSelf allows a user to update their own info, -// requiring the previous password if they want to change password. -func (a *UsersServer) UpdateSelf(ctx context.Context, r *localUserReq.UpdateSelf) (*localUserRes.User, error) { - req := &local_user.UpdateSelfReq{ - Id: r.Id, - Name: r.Name, - Email: r.Username, - Password: r.Password, - PreviousPassword: r.PreviousPassword, - } - res, err := a.client.UpdateSelf(ctx, req) - if err != nil { - return nil, err - } - return fromUpstreamUser(res, false), nil -} - -// DeleteUserByUsername deletes an existing user upstream -func (a *UsersServer) DeleteUserByUsername(ctx context.Context, - r *localUserReq.Username) (*localUserRes.DeleteUserResp, error) { - _, err := a.client.DeleteUser(ctx, &local_user.Email{Email: r.Username}) - return &localUserRes.DeleteUserResp{}, err -} - -// GetUserByUsername fetches an existing user from upstream -func (a *UsersServer) GetUserByUsername(ctx context.Context, - r *localUserReq.Username) (*localUserRes.User, error) { - res, err := a.client.GetUser(ctx, &local_user.Email{Email: r.Username}) - if err != nil { - return nil, err - } - return fromUpstreamUser(res, false), nil -} - -// GetUsers fetches a map of existing users and extracts each user into an array -func (a *UsersServer) GetUsers(ctx context.Context, _ *localUserReq.GetUsersReq) (*localUserRes.Users, error) { - res, err := a.client.GetUsers(ctx, &local_user.GetUsersReq{}) - if err != nil { - return nil, err - } - us := []*localUserRes.User{} - for _, u := range res.Users { - us = append(us, fromUpstreamUser(u, true)) - } - return &localUserRes.Users{Users: us}, nil -} - -func fromUpstreamUser(c *local_user.User, useEmail bool) *localUserRes.User { - res := localUserRes.User{ - Id: c.Id, - Name: c.Name, - Username: c.Email, - } - if useEmail { - res.Email = c.Email - } - return &res -} - -// emailUnlessUsername helps us support backward compatibility of the -// API. It returns username unless username is empty and email is -// non-empty. The boolean flag is true when the email value was -// returned. -func emailUnlessUsername(email, username string) (string, bool) { - if username == "" && email != "" { - return email, true - } - return username, false -} - -// DeleteUser deletes an existing user from upstream -// Deprecated: 20180424200344 -// ----------------------------------------------- -func (a *UsersServer) DeleteUser(ctx context.Context, r *localUserReq.Email) (*localUserRes.DeleteUserResp, error) { - _, err := a.client.DeleteUser(ctx, &local_user.Email{Email: r.Email}) - return &localUserRes.DeleteUserResp{}, err -} - -// GetUser fetches an existing user from upstream -// Deprecated: 20180424200344 -func (a *UsersServer) GetUser(ctx context.Context, r *localUserReq.Email) (*localUserRes.User, error) { - res, err := a.client.GetUser(ctx, &local_user.Email{Email: r.Email}) - if err != nil { - return nil, err - } - return fromUpstreamUser(res, true), nil -} - -// ----------------------------------------------- diff --git a/components/automate-ui/e2e/admin.e2e-spec.ts b/components/automate-ui/e2e/admin.e2e-spec.ts index e8b3a70a5dd..0268ab2af5e 100644 --- a/components/automate-ui/e2e/admin.e2e-spec.ts +++ b/components/automate-ui/e2e/admin.e2e-spec.ts @@ -15,7 +15,7 @@ describe('Admin pages', () => { .reply(200, JSON.stringify( { endpoints: { - '/auth/users': { + '/iam/v2/users': { get: true, put: false, post: true, diff --git a/components/automate-ui/src/app/components/authorized/authorized.component.ts b/components/automate-ui/src/app/components/authorized/authorized.component.ts index 683803759d7..8e728968b26 100644 --- a/components/automate-ui/src/app/components/authorized/authorized.component.ts +++ b/components/automate-ui/src/app/components/authorized/authorized.component.ts @@ -9,9 +9,9 @@ import { AuthorizedChecker, CheckObj } from 'app/helpers/auth/authorized'; import { allPerms } from 'app/entities/userperms/userperms.selectors'; // Data arrives in this form for user convenience, -// i.e. just [allOf]="['/auth/users', 'get'] +// i.e. just [allOf]="['/iam/v2/users', 'get'] // rather than having to build a more verbose object like: -// [allOf]="{ endpoint: '/auth/users', verb: 'get'} +// [allOf]="{ endpoint: '/iam/v2/users', verb: 'get'} // Each input datum is converted to a CheckObj upon arrival. // Internally, this allows for more robust handling of the data. // (So properties must be in sync with `CheckObj`!) diff --git a/components/automate-ui/src/app/components/landing/landing.component.spec.ts b/components/automate-ui/src/app/components/landing/landing.component.spec.ts index d1d68df7b14..e93ce8f769e 100644 --- a/components/automate-ui/src/app/components/landing/landing.component.spec.ts +++ b/components/automate-ui/src/app/components/landing/landing.component.spec.ts @@ -23,8 +23,8 @@ describe('LandingComponent', () => { anyOfCheck: [['/auth/something-else', 'get', '']], route: '/settings/teams' }, - { allOfCheck: [['/auth/users', 'get', '']], route: '/settings/users' }, - { anyOfCheck: [['/iam/v2/tokens', 'get', '']], route: '/settings/tokens' } + { anyOfCheck: [['/iam/v2/tokens', 'get', '']], route: '/settings/tokens' }, + { allOfCheck: [['/iam/v2/users', 'get', '']], route: '/settings/users' } ]; @@ -34,7 +34,7 @@ describe('LandingComponent', () => { beforeEach(async(() => { configureWith({ - '/auth/users': genPerm('/auth/users', false), + '/iam/v2/users': genPerm('/iam/v2/users', false), '/auth/teams': genPerm('/auth/teams', true), '/iam/v2/tokens': genPerm('/iam/v2/tokens', false), '/auth/something-else': genPerm('/auth/something-else', true) @@ -69,7 +69,7 @@ describe('LandingComponent', () => { beforeEach(async(() => { configureWith({ - '/auth/users': genPerm('/auth/users', true), + '/iam/v2/users': genPerm('/iam/v2/users', true), '/auth/teams': genPerm('/auth/teams', true), '/iam/v2/tokens': genPerm('/iam/v2/tokens', true), '/auth/something-else': genPerm('/auth/something-else', true) @@ -104,13 +104,13 @@ describe('LandingComponent', () => { const targetIndex = 1; const newRoutePerms: RoutePerms[] = [ { allOfCheck: [['/auth/teams', 'get', '']], route: '/settings/teams' }, - { allOfCheck: [['/auth/users', 'get', '']], route: '/settings/users' }, - { anyOfCheck: [['/iam/v2/tokens', 'get', '']], route: '/settings/tokens' } + { anyOfCheck: [['/iam/v2/tokens', 'get', '']], route: '/settings/tokens' }, + { allOfCheck: [['/iam/v2/users', 'get', '']], route: '/settings/users' } ]; beforeEach(async(() => { configureWith({ - '/auth/users': genPerm('/auth/users', true), + '/iam/v2/users': genPerm('/iam/v2/users', true), '/auth/teams': genPerm('/auth/teams', false), '/iam/v2/tokens': genPerm('/iam/v2/tokens', false), '/auth/something-else': genPerm('/auth/something-else', true) diff --git a/components/automate-ui/src/app/components/settings-sidebar/settings-sidebar.component.html b/components/automate-ui/src/app/components/settings-sidebar/settings-sidebar.component.html index db21a66bef1..674148702a9 100644 --- a/components/automate-ui/src/app/components/settings-sidebar/settings-sidebar.component.html +++ b/components/automate-ui/src/app/components/settings-sidebar/settings-sidebar.component.html @@ -19,7 +19,7 @@
Identity
- + Users diff --git a/components/automate-ui/src/app/entities/layout/layout-sidebar.service.ts b/components/automate-ui/src/app/entities/layout/layout-sidebar.service.ts index 1303518d4d8..f2d0cb940d0 100644 --- a/components/automate-ui/src/app/entities/layout/layout-sidebar.service.ts +++ b/components/automate-ui/src/app/entities/layout/layout-sidebar.service.ts @@ -173,7 +173,7 @@ export class LayoutSidebarService implements OnInit, OnDestroy { icon: 'person', route: '/settings/users', authorized: { - allOf: ['/auth/users', 'get'] + allOf: ['/iam/v2/users', 'get'] } }, { diff --git a/components/automate-ui/src/app/entities/userperms/README.md b/components/automate-ui/src/app/entities/userperms/README.md index d5eef88d7c9..c600c2519f4 100644 --- a/components/automate-ui/src/app/entities/userperms/README.md +++ b/components/automate-ui/src/app/entities/userperms/README.md @@ -14,9 +14,9 @@ what the user has permissions for. The endpoint is "/auth/introspect" and supports two methods: 1. GET - Does an "IntrospectAll", returning data for all non-parameterized endpoints - (i.e. concrete endpoints like "/auth/teams" but not abstract endpoints like "/auth/users/{email}"). + (i.e. concrete endpoints like "/auth/teams" but not abstract endpoints like "/iam/v2/users/{email}"). 2. POST - Does an "Introspect", returning data for the single endpoint path specified in the payload - (an example payload might be "path=/auth/users/foo@bar.com" corresponding to "/auth/users/{email}"). + (an example payload might be "path=/iam/v2/users/foo@bar.com" corresponding to "/iam/v2/users/{email}"). Data from either call returns the same structure: diff --git a/components/automate-ui/src/app/entities/userperms/userperms.requests.ts b/components/automate-ui/src/app/entities/userperms/userperms.requests.ts index 16c7e3ce782..7c5d1061e2f 100644 --- a/components/automate-ui/src/app/entities/userperms/userperms.requests.ts +++ b/components/automate-ui/src/app/entities/userperms/userperms.requests.ts @@ -16,7 +16,7 @@ export class UserPermsRequests { constructor(private http: HttpClient) {} // Returns data for all *non-parameterized* endpoints - // (i.e. endpoints like "/auth/teams" but not "/auth/users/{email}"). + // (i.e. endpoints like "/iam/v2/teams" but not "/iam/v2/users/{email}"). public fetchAll(): Observable { const url = `${env.auth_url}/introspect`; return this.http.get(url); diff --git a/components/automate-ui/src/app/helpers/auth/authorized.spec.ts b/components/automate-ui/src/app/helpers/auth/authorized.spec.ts index e326f5c3485..86ebc0ab69e 100644 --- a/components/automate-ui/src/app/helpers/auth/authorized.spec.ts +++ b/components/automate-ui/src/app/helpers/auth/authorized.spec.ts @@ -232,8 +232,8 @@ describe('AuthorizedComponent real round trip', () => { userperms: () => ({ status: Status.loadingSuccess, byId: >{ - '/auth/users': { - id: '/auth/users', + '/iam/v2/users': { + id: '/iam/v2/users', get: false, put: false, post: false, @@ -268,7 +268,7 @@ describe('AuthorizedComponent real round trip', () => { authorizedChecker.setPermissions([{ endpoint: '/auth/teams', verb: 'get' }], []); setTimeout(() => { expect(visible).toBe(true); - authorizedChecker.setPermissions([{ endpoint: '/auth/users', verb: 'get' }], []); + authorizedChecker.setPermissions([{ endpoint: '/iam/v2/users', verb: 'get' }], []); setTimeout(() => { expect(visible).toBe(false); authorizedChecker.setPermissions([{ endpoint: '/auth/teams', verb: 'get' }], []); @@ -302,8 +302,8 @@ describe('AuthorizedComponent evalPerms', () => { beforeAll(() => { perms = { - '/auth/users': { - id: '/auth/users', + '/iam/v2/users': { + id: '/iam/v2/users', get: true, put: false, post: false, @@ -318,8 +318,8 @@ describe('AuthorizedComponent evalPerms', () => { delete: false, patch: false }, - '/auth/users/alice': { - id: '/auth/users/alice', + '/iam/v2/users/alice': { + id: '/iam/v2/users/alice', get: true, put: false, post: false, @@ -332,32 +332,32 @@ describe('AuthorizedComponent evalPerms', () => { using([ { descr: 'empty allOf and anyOf evaluates to true', expected: true }, { descr: 'requires all of allOf to be true, and returns true', - allOf: [{ endpoint: '/auth/users', verb: 'get', paramList: [] }, + allOf: [{ endpoint: '/iam/v2/users', verb: 'get', paramList: [] }, { endpoint: '/auth/teams', verb: 'get', paramList: [] }], expected: true }, { descr: 'requires all of allOf to be true, and otherwise returns false', - allOf: [{ endpoint: '/auth/users', verb: 'get', paramList: [] }, + allOf: [{ endpoint: '/iam/v2/users', verb: 'get', paramList: [] }, { endpoint: '/auth/teams', verb: 'put', paramList: [] }]}, { descr: 'requires any of anyOf to be true', - anyOf: [{ endpoint: '/auth/users', verb: 'get', paramList: [] }, + anyOf: [{ endpoint: '/iam/v2/users', verb: 'get', paramList: [] }, { endpoint: '/auth/teams', verb: 'put', paramList: [] }], expected: true }, { descr: 'fills parameters in allOf, when authorized, returns true', - allOf: [{ endpoint: '/auth/users/{id}', verb: 'get', paramList: 'alice' }], + allOf: [{ endpoint: '/iam/v2/users/{id}', verb: 'get', paramList: 'alice' }], expected: true }, { descr: 'fills parameters in allOf (from array), when authorized, returns true', - allOf: [{ endpoint: '/auth/users/{id}', verb: 'get', paramList: ['alice'] }], + allOf: [{ endpoint: '/iam/v2/users/{id}', verb: 'get', paramList: ['alice'] }], expected: true }, { descr: 'fills parameters in allOf, when not authorized, returns false', - allOf: [{ endpoint: '/auth/users/{id}', verb: 'get', paramList: 'bob' }]}, + allOf: [{ endpoint: '/iam/v2/users/{id}', verb: 'get', paramList: 'bob' }]}, { descr: 'fills parameters in anyOf, when authorized, returns true', - anyOf: [{ endpoint: '/auth/users/{id}', verb: 'get', paramList: 'alice' }], + anyOf: [{ endpoint: '/iam/v2/users/{id}', verb: 'get', paramList: 'alice' }], expected: true }, { descr: 'fills parameters in anyOf (from array), when authorized, returns true', - anyOf: [{ endpoint: '/auth/users/{id}', verb: 'get', paramList: ['alice'] }], + anyOf: [{ endpoint: '/iam/v2/users/{id}', verb: 'get', paramList: ['alice'] }], expected: true }, { descr: 'fills parameters in anyOf, when not authorized, returns false', - anyOf: [{ endpoint: '/auth/users/{id}', verb: 'get', paramList: 'bob' }]} + anyOf: [{ endpoint: '/iam/v2/users/{id}', verb: 'get', paramList: 'bob' }]} ], ({descr, allOf, anyOf, expected}: { descr: string; allOf?, anyOf?: CheckObj[]; expected?: boolean}) => { diff --git a/components/automate-ui/src/app/modules/team/team-details/team-details.component.html b/components/automate-ui/src/app/modules/team/team-details/team-details.component.html index 27440b83a48..717d8f843df 100644 --- a/components/automate-ui/src/app/modules/team/team-details/team-details.component.html +++ b/components/automate-ui/src/app/modules/team/team-details/team-details.component.html @@ -44,7 +44,7 @@ diff --git a/components/automate-ui/src/app/modules/user/user-management/user-management.component.ts b/components/automate-ui/src/app/modules/user/user-management/user-management.component.ts index 3f22241410f..9f15d64d0de 100644 --- a/components/automate-ui/src/app/modules/user/user-management/user-management.component.ts +++ b/components/automate-ui/src/app/modules/user/user-management/user-management.component.ts @@ -28,7 +28,7 @@ export class UserManagementComponent implements OnInit, OnDestroy { public users: User[] = []; public addButtonText = 'Create User'; public removeText = 'Delete User'; - public baseUrl = '/auth/users'; + public baseUrl = '/iam/v2/users'; constructor( private store: Store, diff --git a/components/automate-ui/src/app/page-components/navbar/navbar.component.html b/components/automate-ui/src/app/page-components/navbar/navbar.component.html index f8741d3de6e..7a1027911ff 100644 --- a/components/automate-ui/src/app/page-components/navbar/navbar.component.html +++ b/components/automate-ui/src/app/page-components/navbar/navbar.component.html @@ -23,7 +23,7 @@ diff --git a/components/automate-ui/src/app/pages/settings-landing/settings-landing.component.ts b/components/automate-ui/src/app/pages/settings-landing/settings-landing.component.ts index d5a5822ce93..3465b949adb 100644 --- a/components/automate-ui/src/app/pages/settings-landing/settings-landing.component.ts +++ b/components/automate-ui/src/app/pages/settings-landing/settings-landing.component.ts @@ -15,7 +15,7 @@ export class SettingsLandingComponent { { anyOfCheck: [['/nodemanagers/search', 'post', '']], route: '/settings/node-integrations' }, { anyOfCheck: [['/secrets/search', 'post', '']], route: '/settings/node-credentials' }, { anyOfCheck: [['/retention/nodes/status', 'get', '']], route: '/settings/node-lifecycle' }, - { allOfCheck: [['/auth/users', 'get', '']], route: '/settings/users' }, + { allOfCheck: [['/iam/v2/users', 'get', '']], route: '/settings/users' }, { allOfCheck: [['/auth/teams', 'get', '']], route: '/settings/teams' }, { allOfCheck: [['/iam/v2/tokens', 'get', '']], route: '/settings/tokens' }, { allOfCheck: [['/iam/v2/policies', 'get', '']], route: '/settings/policies' },