fix: remove unused config struct key, fix local aliases parsing error

This commit is contained in:
2024-10-04 17:13:47 +00:00
parent 5a90dd8377
commit 91c396dd68
8 changed files with 70 additions and 45 deletions
+2 -2
View File
@@ -4,7 +4,7 @@ import { readableBytes } from "@/lib/utils";
import Button from "@/components/ui/button";
type Props = {
data: Bucket;
data: Bucket & { aliases: string[] };
};
const BucketCard = ({ data }: Props) => {
@@ -15,7 +15,7 @@ const BucketCard = ({ data }: Props) => {
<ArchiveIcon size={28} className="shrink-0" />
<p className="text-xl font-medium truncate">
{data.globalAliases?.join(", ")}
{data.aliases?.join(", ")}
</p>
</div>
@@ -84,7 +84,7 @@ const AllowKeyDialog = ({ currentKeys }: Props) => {
Allow Key
</Button>
<Modal ref={dialogRef} backdrop open={isOpen}>
<Modal ref={dialogRef} backdrop open={isOpen} className="max-w-2xl">
<Modal.Header className="mb-1">Allow Key</Modal.Header>
<Modal.Body>
<p>Enter the key you want to allow access to.</p>
@@ -100,6 +100,7 @@ const AllowKeyDialog = ({ currentKeys }: Props) => {
/>
Key
</label>
<label>Local Aliases</label>
<label className="flex items-center gap-2 cursor-pointer">
<Checkbox
color="primary"
@@ -129,23 +130,31 @@ const AllowKeyDialog = ({ currentKeys }: Props) => {
<Table.Body>
{!keyFields.length ? (
<tr>
<td colSpan={4} className="text-center">
<td colSpan={5} className="text-center">
No keys found
</td>
</tr>
) : null}
{keyFields.map((field, index) => (
<Table.Row key={field.id}>
<CheckboxField
form={form}
name={`keys.${index}.checked`}
label={field.name || field.keyId?.substring(0, 8)}
/>
<CheckboxField form={form} name={`keys.${index}.read`} />
<CheckboxField form={form} name={`keys.${index}.write`} />
<CheckboxField form={form} name={`keys.${index}.owner`} />
</Table.Row>
))}
{keyFields.map((field, index) => {
const curKey = bucket.keys.find(
(key) => key.accessKeyId === field.keyId
);
return (
<Table.Row key={field.id}>
<CheckboxField
form={form}
name={`keys.${index}.checked`}
label={field.name || field.keyId?.substring(0, 8)}
/>
<span>
{curKey?.bucketLocalAliases?.join(", ") || "-"}
</span>
<CheckboxField form={form} name={`keys.${index}.read`} />
<CheckboxField form={form} name={`keys.${index}.write`} />
<CheckboxField form={form} name={`keys.${index}.owner`} />
</Table.Row>
);
})}
</Table.Body>
</Table>
</div>
@@ -50,6 +50,7 @@ const PermissionsTab = () => {
<Table.Head>
<span>#</span>
<span>Key</span>
<span>Aliases</span>
<span>Read</span>
<span>Write</span>
<span>Owner</span>
@@ -61,6 +62,7 @@ const PermissionsTab = () => {
<Table.Row>
<span>{idx + 1}</span>
<span>{key.name || key.accessKeyId?.substring(0, 8)}</span>
<span>{key.bucketLocalAliases?.join(", ") || "-"}</span>
<span>
<Checkbox
checked={key.permissions?.read}
+12 -5
View File
@@ -10,20 +10,27 @@ const BucketsPage = () => {
const [search, setSearch] = useState("");
const items = useMemo(() => {
let buckets = data || [];
let buckets =
data?.map((bucket) => {
return {
...bucket,
aliases: [
...(bucket.globalAliases || []),
...(bucket.localAliases?.map((l) => l.alias) || []),
],
};
}) || [];
if (search?.length > 0) {
const q = search.toLowerCase();
buckets = buckets.filter(
(bucket) =>
bucket.id.includes(q) ||
bucket.globalAliases.find((alias) => alias.includes(q))
bucket.aliases.find((alias) => alias.includes(q))
);
}
buckets = buckets.sort((a, b) =>
a.globalAliases[0].localeCompare(b.globalAliases[0])
);
buckets = buckets.sort((a, b) => a.aliases[0].localeCompare(b.aliases[0]));
return buckets;
}, [data, search]);
+7 -1
View File
@@ -5,6 +5,7 @@ export type GetBucketRes = Bucket[];
export type Bucket = {
id: string;
globalAliases: string[];
localAliases: LocalAlias[];
websiteAccess: boolean;
websiteConfig?: WebsiteConfig | null;
keys: Key[];
@@ -17,11 +18,16 @@ export type Bucket = {
quotas: Quotas;
};
export type LocalAlias = {
accessKeyId: string;
alias: string;
};
export type Key = {
accessKeyId: string;
name: string;
permissions: Permissions;
bucketLocalAliases: any[];
bucketLocalAliases: string[];
};
export type Permissions = {