Merge pull request #2431 from Infisical/misc/terraform-project-group-prereq

misc: setup prerequisites for terraform project group
This commit is contained in:
Maidul Islam
2024-09-23 11:21:46 -04:00
committed by GitHub
24 changed files with 556 additions and 233 deletions
+25 -9
View File
@@ -38,17 +38,17 @@ export const useUpdateGroup = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({
currentSlug,
id,
name,
slug,
role
}: {
currentSlug: string;
id: string;
name?: string;
slug?: string;
role?: string;
}) => {
const { data: group } = await apiRequest.patch<TGroup>(`/api/v1/groups/${currentSlug}`, {
const { data: group } = await apiRequest.patch<TGroup>(`/api/v1/groups/${id}`, {
name,
slug,
role
@@ -65,8 +65,8 @@ export const useUpdateGroup = () => {
export const useDeleteGroup = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({ slug }: { slug: string }) => {
const { data: group } = await apiRequest.delete<TGroup>(`/api/v1/groups/${slug}`);
mutationFn: async ({ id }: { id: string }) => {
const { data: group } = await apiRequest.delete<TGroup>(`/api/v1/groups/${id}`);
return group;
},
@@ -79,8 +79,15 @@ export const useDeleteGroup = () => {
export const useAddUserToGroup = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({ slug, username }: { slug: string; username: string }) => {
const { data } = await apiRequest.post<TGroup>(`/api/v1/groups/${slug}/users/${username}`);
mutationFn: async ({
groupId,
username
}: {
groupId: string;
username: string;
slug: string;
}) => {
const { data } = await apiRequest.post<TGroup>(`/api/v1/groups/${groupId}/users/${username}`);
return data;
},
@@ -93,8 +100,17 @@ export const useAddUserToGroup = () => {
export const useRemoveUserFromGroup = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({ slug, username }: { slug: string; username: string }) => {
const { data } = await apiRequest.delete<TGroup>(`/api/v1/groups/${slug}/users/${username}`);
mutationFn: async ({
username,
groupId
}: {
slug: string;
username: string;
groupId: string;
}) => {
const { data } = await apiRequest.delete<TGroup>(
`/api/v1/groups/${groupId}/users/${username}`
);
return data;
},
+10 -6
View File
@@ -4,7 +4,8 @@ import { apiRequest } from "@app/config/request";
export const groupKeys = {
allGroupUserMemberships: () => ["group-user-memberships"] as const,
forGroupUserMemberships: (slug: string) => [...groupKeys.allGroupUserMemberships(), slug] as const,
forGroupUserMemberships: (slug: string) =>
[...groupKeys.allGroupUserMemberships(), slug] as const,
specificGroupUserMemberships: ({
slug,
offset,
@@ -28,11 +29,13 @@ type TUser = {
};
export const useListGroupUsers = ({
id,
groupSlug,
offset = 0,
limit = 10,
username
}: {
id: string;
groupSlug: string;
offset: number;
limit: number;
@@ -52,14 +55,15 @@ export const useListGroupUsers = ({
limit: String(limit),
username
});
const { data } = await apiRequest.get<{ users: TUser[]; totalCount: number; }>(
`/api/v1/groups/${groupSlug}/users`, {
const { data } = await apiRequest.get<{ users: TUser[]; totalCount: number }>(
`/api/v1/groups/${id}/users`,
{
params
}
);
return data;
},
}
});
};
+19 -18
View File
@@ -10,23 +10,24 @@ export const useAddGroupToWorkspace = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({
groupSlug,
projectSlug,
groupId,
projectId,
role
}: {
groupSlug: string;
projectSlug: string;
groupId: string;
projectId: string;
role?: string;
}) => {
const {
data: { groupMembership }
} = await apiRequest.post(`/api/v2/workspace/${projectSlug}/groups/${groupSlug}`, {
} = await apiRequest.post(`/api/v2/workspace/${projectId}/groups/${groupId}`, {
role
});
return groupMembership;
},
onSuccess: (_, { projectSlug }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceGroupMemberships(projectSlug));
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceGroupMemberships(projectId));
}
});
};
@@ -34,17 +35,17 @@ export const useAddGroupToWorkspace = () => {
export const useUpdateGroupWorkspaceRole = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({ groupSlug, projectSlug, roles }: TUpdateWorkspaceGroupRoleDTO) => {
mutationFn: async ({ groupId, projectId, roles }: TUpdateWorkspaceGroupRoleDTO) => {
const {
data: { groupMembership }
} = await apiRequest.patch(`/api/v2/workspace/${projectSlug}/groups/${groupSlug}`, {
} = await apiRequest.patch(`/api/v2/workspace/${projectId}/groups/${groupId}`, {
roles
});
return groupMembership;
},
onSuccess: (_, { projectSlug }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceGroupMemberships(projectSlug));
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceGroupMemberships(projectId));
}
});
};
@@ -53,20 +54,20 @@ export const useDeleteGroupFromWorkspace = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({
groupSlug,
projectSlug
groupId,
projectId
}: {
groupSlug: string;
projectSlug: string;
groupId: string;
projectId: string;
username?: string;
}) => {
const {
data: { groupMembership }
} = await apiRequest.delete(`/api/v2/workspace/${projectSlug}/groups/${groupSlug}`);
} = await apiRequest.delete(`/api/v2/workspace/${projectId}/groups/${groupId}`);
return groupMembership;
},
onSuccess: (_, { projectSlug, username }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceGroupMemberships(projectSlug));
onSuccess: (_, { projectId, username }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceGroupMemberships(projectId));
if (username) {
queryClient.invalidateQueries(userKeys.listUserGroupMemberships(username));
+3 -3
View File
@@ -535,14 +535,14 @@ export const useGetWorkspaceIdentityMemberships = (
});
};
export const useListWorkspaceGroups = (projectSlug: string) => {
export const useListWorkspaceGroups = (projectId: string) => {
return useQuery({
queryKey: workspaceKeys.getWorkspaceGroupMemberships(projectSlug),
queryKey: workspaceKeys.getWorkspaceGroupMemberships(projectId),
queryFn: async () => {
const {
data: { groupMemberships }
} = await apiRequest.get<{ groupMemberships: TGroupMembership[] }>(
`/api/v2/workspace/${projectSlug}/groups`
`/api/v2/workspace/${projectId}/groups`
);
return groupMemberships;
},
+2 -2
View File
@@ -127,8 +127,8 @@ export type TUpdateWorkspaceIdentityRoleDTO = {
};
export type TUpdateWorkspaceGroupRoleDTO = {
groupSlug: string;
projectSlug: string;
groupId: string;
projectId: string;
roles: (
| {
role: string;