From 2b279efe15bf10a005d072cf8773244390b80b7e Mon Sep 17 00:00:00 2001 From: Cory Forseth Date: Mon, 14 Apr 2025 06:40:55 -0500 Subject: [PATCH] Use team uid for team group actions (#103415) * use team uid for team group actions * add constructor for tests; rename vars for clarity * github told me to do this --- pkg/services/team/team.go | 18 +++++++++--------- pkg/services/team/teamtest/team.go | 6 ++++++ public/app/features/teams/state/actions.ts | 6 +++--- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/pkg/services/team/team.go b/pkg/services/team/team.go index e93c35aee46..49db0c53734 100644 --- a/pkg/services/team/team.go +++ b/pkg/services/team/team.go @@ -25,13 +25,13 @@ type Service interface { } func UIDToIDHandler(teamService Service) func(ctx context.Context, orgID int64, resourceID string) (string, error) { - return func(ctx context.Context, orgID int64, resourceID string) (string, error) { - // if teamID is empty or is an integer, we assume it's a team id and we don't need to resolve it - _, err := strconv.ParseInt(resourceID, 10, 64) - if resourceID == "" || err == nil { - return resourceID, nil + return func(ctx context.Context, orgID int64, teamIDorUID string) (string, error) { + // if teamIDorUID is empty or is an integer, we assume it's a team ID, and we don't need to resolve it + _, err := strconv.ParseInt(teamIDorUID, 10, 64) + if teamIDorUID == "" || err == nil { + return teamIDorUID, nil } - team, err := teamService.GetTeamByID(ctx, &GetTeamByIDQuery{UID: resourceID, OrgID: orgID}) + team, err := teamService.GetTeamByID(ctx, &GetTeamByIDQuery{UID: teamIDorUID, OrgID: orgID}) if err != nil { return "", err } @@ -44,9 +44,9 @@ func MiddlewareTeamUIDResolver(teamService Service, paramName string) web.Handle handler := UIDToIDHandler(teamService) return func(c *contextmodel.ReqContext) { - // Get team id from request, fetch team and replace teamId with team id - teamID := web.Params(c.Req)[paramName] - id, err := handler(c.Req.Context(), c.OrgID, teamID) + // Get team id from request, fetch team and replace team UID with team ID + teamIDorUID := web.Params(c.Req)[paramName] + id, err := handler(c.Req.Context(), c.OrgID, teamIDorUID) if err == nil { gotParams := web.Params(c.Req) gotParams[paramName] = id diff --git a/pkg/services/team/teamtest/team.go b/pkg/services/team/teamtest/team.go index f113836f857..3caefb9562e 100644 --- a/pkg/services/team/teamtest/team.go +++ b/pkg/services/team/teamtest/team.go @@ -20,6 +20,12 @@ func NewFakeService() *FakeService { return &FakeService{} } +func NewFakeServiceWithTeamDTO(teamDTO *team.TeamDTO) *FakeService { + return &FakeService{ + ExpectedTeamDTO: teamDTO, + } +} + func (s *FakeService) CreateTeam(ctx context.Context, cmd *team.CreateTeamCommand) (team.Team, error) { return s.ExpectedTeam, s.ExpectedError } diff --git a/public/app/features/teams/state/actions.ts b/public/app/features/teams/state/actions.ts index 32c0e1fdd22..967c87ac904 100644 --- a/public/app/features/teams/state/actions.ts +++ b/public/app/features/teams/state/actions.ts @@ -118,7 +118,7 @@ export function updateTeam(name: string, email: string): ThunkResult { export function loadTeamGroups(): ThunkResult { return async (dispatch, getStore) => { const team = getStore().team.team; - const response = await getBackendSrv().get(`/api/teams/${team.id}/groups`); + const response = await getBackendSrv().get(`/api/teams/${team.uid}/groups`); dispatch(teamGroupsLoaded(response)); }; } @@ -126,7 +126,7 @@ export function loadTeamGroups(): ThunkResult { export function addTeamGroup(groupId: string): ThunkResult { return async (dispatch, getStore) => { const team = getStore().team.team; - await getBackendSrv().post(`/api/teams/${team.id}/groups`, { groupId: groupId }); + await getBackendSrv().post(`/api/teams/${team.uid}/groups`, { groupId: groupId }); dispatch(loadTeamGroups()); }; } @@ -135,7 +135,7 @@ export function removeTeamGroup(groupId: string): ThunkResult { return async (dispatch, getStore) => { const team = getStore().team.team; // need to use query parameter due to escaped characters in the request - await getBackendSrv().delete(`/api/teams/${team.id}/groups?groupId=${encodeURIComponent(groupId)}`); + await getBackendSrv().delete(`/api/teams/${team.uid}/groups?groupId=${encodeURIComponent(groupId)}`); dispatch(loadTeamGroups()); }; }