Remove/deprecate service accounts + old logs/actions

This commit is contained in:
Tuan Dang
2023-11-05 15:49:24 +02:00
parent c29a11866e
commit 50ce977c55
59 changed files with 13 additions and 3560 deletions
-1
View File
@@ -15,7 +15,6 @@ export * from "./secretImports";
export * from "./secretRotation";
export * from "./secrets";
export * from "./secretSnapshots";
export * from "./serviceAccounts";
export * from "./serviceTokens";
export * from "./ssoConfig";
export * from "./subscriptions";
@@ -1,10 +0,0 @@
export {
useCreateServiceAccount,
useCreateServiceAccountProjectLevelPermission,
useDeleteServiceAccount,
useDeleteServiceAccountProjectLevelPermission,
useGetServiceAccountById,
useGetServiceAccountProjectLevelPermissions,
useGetServiceAccounts,
useRenameServiceAccount
} from "./queries";
@@ -1,137 +0,0 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request";
import {
CreateServiceAccountDTO,
CreateServiceAccountRes,
CreateServiceAccountWorkspacePermissionDTO,
DeleteServiceAccountWorkspacePermissionDTO,
RenameServiceAccountDTO,
ServiceAccount,
ServiceAccountWorkspacePermission
} from "./types";
const serviceAccountKeys = {
getServiceAccountById: (serviceAccountId: string) => [{ serviceAccountId }, "service-account"] as const,
getServiceAccounts: (organizationID: string) => [{ organizationID }, "service-accounts"] as const,
getServiceAccountProjectLevelPermissions: (serviceAccountId: string) => [{ serviceAccountId }, "service-account-project-level-permissions"] as const
}
const fetchServiceAccounts = async (organizationID: string) => {
const { data } = await apiRequest.get<{ serviceAccounts: ServiceAccount[] }>(
`/api/v2/organizations/${organizationID}/service-accounts`
);
return data.serviceAccounts;
}
const fetchServiceAccountById = async (serviceAccountId: string) => {
const { data } = await apiRequest.get<{ serviceAccount: ServiceAccount }>(
`/api/v2/service-accounts/${serviceAccountId}`
);
return data.serviceAccount;
}
export const useGetServiceAccounts = (organizationID: string) =>
useQuery({
queryKey: serviceAccountKeys.getServiceAccounts(organizationID),
queryFn: () => fetchServiceAccounts(organizationID),
enabled: Boolean(organizationID)
});
export const useGetServiceAccountById = (serviceAccountId: string) => {
return useQuery({
queryKey: serviceAccountKeys.getServiceAccountById(serviceAccountId),
queryFn: () => fetchServiceAccountById(serviceAccountId),
enabled: true
});
}
export const useCreateServiceAccount = () => {
const queryClient = useQueryClient();
return useMutation<CreateServiceAccountRes, {}, CreateServiceAccountDTO>({
mutationFn: async (body) => {
const { data } = await apiRequest.post("/api/v2/service-accounts/", body);
return data;
},
onSuccess: ({ serviceAccount }) => {
queryClient.invalidateQueries(serviceAccountKeys.getServiceAccounts(serviceAccount.organization));
}
});
}
export const useRenameServiceAccount = () => {
const queryClient = useQueryClient();
return useMutation<ServiceAccount, {}, RenameServiceAccountDTO>({
mutationFn: async ({ serviceAccountId, name }) => {
const { data: { serviceAccount } } = await apiRequest.patch(`/api/v2/service-accounts/${serviceAccountId}/name`, { name });
return serviceAccount;
},
onSuccess: (serviceAccount) => {
queryClient.invalidateQueries(serviceAccountKeys.getServiceAccountById(serviceAccount._id));
queryClient.invalidateQueries(serviceAccountKeys.getServiceAccounts(serviceAccount.organization));
}
});
}
export const useDeleteServiceAccount = () => {
const queryClient = useQueryClient();
return useMutation<ServiceAccount, {}, string>({
mutationFn: async (serviceAccountId) => {
const { data: { serviceAccount } } = await apiRequest.delete(`/api/v2/service-accounts/${serviceAccountId}`);
return serviceAccount;
},
onSuccess: ({ organization }) => {
queryClient.invalidateQueries(serviceAccountKeys.getServiceAccounts(organization));
}
});
}
const fetchServiceAccountProjectLevelPermissions = async (serviceAccountId: string) => {
const { data: { serviceAccountWorkspacePermissions } } = await apiRequest.get<{ serviceAccountWorkspacePermissions: ServiceAccountWorkspacePermission[] }>(
`/api/v2/service-accounts/${serviceAccountId}/permissions/workspace`
);
return serviceAccountWorkspacePermissions;
}
export const useGetServiceAccountProjectLevelPermissions = (serviceAccountId: string) => {
return useQuery({
queryKey: serviceAccountKeys.getServiceAccountProjectLevelPermissions(serviceAccountId),
queryFn: () => fetchServiceAccountProjectLevelPermissions(serviceAccountId),
enabled: true
});
}
export const useCreateServiceAccountProjectLevelPermission = () => {
const queryClient = useQueryClient();
return useMutation<ServiceAccountWorkspacePermission, {}, CreateServiceAccountWorkspacePermissionDTO>({
mutationFn: async (body) => {
const { data: { serviceAccountWorkspacePermission } } = await apiRequest.post(`/api/v2/service-accounts/${body.serviceAccountId}/permissions/workspace`, body);
return serviceAccountWorkspacePermission;
},
onSuccess: ({ serviceAccount }) => {
queryClient.invalidateQueries(serviceAccountKeys.getServiceAccountProjectLevelPermissions(serviceAccount));
}
});
}
export const useDeleteServiceAccountProjectLevelPermission = () => {
const queryClient = useQueryClient();
return useMutation<ServiceAccountWorkspacePermission, {}, DeleteServiceAccountWorkspacePermissionDTO>({
mutationFn: async ({ serviceAccountId, serviceAccountWorkspacePermissionId }) => {
const { data: { serviceAccountWorkspacePermission} } = await apiRequest.delete(`/api/v2/service-accounts/${serviceAccountId}/permissions/workspace/${serviceAccountWorkspacePermissionId}`);
return serviceAccountWorkspacePermission;
},
onSuccess: (serviceAccountWorkspacePermission) => {
queryClient.invalidateQueries(serviceAccountKeys.getServiceAccountProjectLevelPermissions(serviceAccountWorkspacePermission.serviceAccount));
}
});
}
@@ -1,51 +0,0 @@
import { Workspace } from "../workspace/types";
export type ServiceAccount = {
_id: string;
name: string;
organization: string;
user: string;
publicKey: string;
expiresAt: string;
}
export type CreateServiceAccountDTO = {
name: string;
organizationId: string;
publicKey: string;
expiresIn: number;
}
export type CreateServiceAccountRes = {
serviceAccount: ServiceAccount;
serviceAccountAccessKey: string;
}
export type RenameServiceAccountDTO = {
serviceAccountId: string;
name: string;
}
export type ServiceAccountWorkspacePermission = {
_id: string;
serviceAccount: string;
workspace: Workspace;
environment: string;
read: boolean;
write: boolean;
}
export type CreateServiceAccountWorkspacePermissionDTO = {
serviceAccountId: string;
workspaceId: string;
environment: string;
read: boolean;
write: boolean;
encryptedKey: string;
nonce: string;
}
export type DeleteServiceAccountWorkspacePermissionDTO = {
serviceAccountId: string;
serviceAccountWorkspacePermissionId: string;
}