Begin service account middleware

This commit is contained in:
Tuan Dang
2023-03-30 23:55:24 +07:00
parent 54e099f8a8
commit 9c18adf35f
31 changed files with 279 additions and 146 deletions

View File

@@ -1,3 +1,5 @@
import { Workspace } from '../workspace/types';
export type ServiceAccount = {
_id: string;
name: string;
@@ -27,7 +29,7 @@ export type RenameServiceAccountDTO = {
export type ServiceAccountWorkspacePermission = {
_id: string;
serviceAccount: string;
workspace: string;
workspace: Workspace;
environment: string;
canRead: boolean;
canWrite: boolean;

View File

@@ -1,20 +0,0 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import Head from 'next/head';
export default function NewServiceAccountPage() {
console.log('NewServiceAccountPage');
return (
<div>
<Head>
<title>Some title</title>
<link rel="icon" href="/infisical.ico" />
</Head>
<div>
Hello!
</div>
{/* <OrgSettingsPage /> */}
</div>
);
}
// NewServiceAccountPage.requireAuth = true;

View File

@@ -1,4 +1,4 @@
import { useEffect, useState } from 'react';
import { useState } from 'react';
import { Controller,useForm } from 'react-hook-form';
import {
faKey,
@@ -63,11 +63,10 @@ type Props = {
export const SAProjectLevelPermissionsTable = ({
serviceAccountId
}: Props) => {
}: Props): JSX.Element => {
const { data: serviceAccount } = useGetServiceAccountById(serviceAccountId);
const { data: userWorkspaces, isLoading: isUserWorkspacesLoading } = useGetUserWorkspaces();
const [searchPermissions, setSearchPermissions] = useState('');
const [defaultValues, setDefaultValues] = useState<CreateProjectLevelPermissionForm | undefined>(undefined);
const { data: serviceAccountWorkspacePermissions, isLoading: isPermissionsLoading } = useGetServiceAccountProjectLevelPermissions(serviceAccountId);
@@ -78,13 +77,15 @@ export const SAProjectLevelPermissionsTable = ({
'addProjectLevelPermission',
'removeProjectLevelPermission',
] as const);
const [, setSelectedWorkspace] = useState<undefined | string>(undefined);
const {
control,
handleSubmit,
reset,
formState: { isSubmitting }
} = useForm<CreateProjectLevelPermissionForm>({ resolver: yupResolver(createProjectLevelPermissionSchema), defaultValues })
} = useForm<CreateProjectLevelPermissionForm>({ resolver: yupResolver(createProjectLevelPermissionSchema) })
const onAddProjectLevelPermission = async ({
privateKey,
@@ -144,22 +145,6 @@ export const SAProjectLevelPermissionsTable = ({
handlePopUpClose('removeProjectLevelPermission');
}
useEffect(() => {
if (userWorkspaces) {
setDefaultValues({
privateKey: '',
workspace: String(userWorkspaces?.[0]?._id),
environment: String(userWorkspaces?.[0]?.environments?.[0]?.slug),
permissions: {
canRead: true,
canWrite: false,
canUpdate: false,
canDelete: false,
}
});
}
}, [userWorkspaces]);
return (
<div className="w-full bg-white/5 p-6">
<p className="mb-4 text-xl font-semibold">Project-Level Permissions</p>
@@ -217,28 +202,28 @@ export const SAProjectLevelPermissionsTable = ({
id="isReadPermissionEnabled"
isChecked={canRead}
isDisabled
/>
>{/**/}</Checkbox>
</Td>
<Td>
<Checkbox
id="isWritePermissionEnabled"
isChecked={canWrite}
isDisabled
/>
>{/**/}</Checkbox>
</Td>
<Td>
<Checkbox
id="isUpdatePermissionEnabled"
isChecked={canUpdate}
isDisabled
/>
>{/**/}</Checkbox>
</Td>
<Td>
<Checkbox
id="isDeletePermissionEnabled"
isChecked={canDelete}
isDisabled
/>
>{/**/}</Checkbox>
</Td>
<Td>
<IconButton
@@ -302,7 +287,10 @@ export const SAProjectLevelPermissionsTable = ({
<Select
defaultValue={field.value}
{...field}
onValueChange={(e) => onChange(e)}
onValueChange={(e) => {
onChange(e);
setSelectedWorkspace(e);
}}
className="w-full border border-mine-shaft-500"
>
{userWorkspaces && userWorkspaces.length > 0 ? (

View File

@@ -104,12 +104,12 @@ export const OrgServiceAccountsTable = () => {
const keyPair = generateKeyPair();
setPrivateKey(keyPair.privateKey);
const serviceAccountDetails = await createServiceAccount.mutateAsync({
name,
organizationId: currentOrg?._id,
publicKey: keyPair.publicKey,
expiresIn
expiresIn: Number(expiresIn)
});
setAccessKey(serviceAccountDetails.serviceAccountAccessKey);
@@ -152,26 +152,28 @@ export const OrgServiceAccountsTable = () => {
control={control}
name="expiresIn"
defaultValue={String(serviceAccountExpiration?.[0]?.value)}
render={({ field: { onChange, ...field }, fieldState: { error } }) => (
<FormControl
label="Expiration"
errorText={error?.message}
isError={Boolean(error)}
>
<Select
defaultValue={field.value}
{...field}
onValueChange={(e) => onChange(e)}
className="w-full"
render={({ field: { onChange, ...field }, fieldState: { error } }) => {
return (
<FormControl
label="Expiration"
errorText={error?.message}
isError={Boolean(error)}
>
{serviceAccountExpiration.map(({ label, value }) => (
<SelectItem value={String(value)} key={label}>
{label}
</SelectItem>
))}
</Select>
</FormControl>
)}
<Select
defaultValue={field.value}
{...field}
onValueChange={(e) => onChange(e)}
className="w-full"
>
{serviceAccountExpiration.map(({ label, value }) => (
<SelectItem value={String(value)} key={label}>
{label}
</SelectItem>
))}
</Select>
</FormControl>
);
}}
/>
<div className="mt-8 flex items-center">
<Button