From f63fdb4d331a8ba4e3b27c2a4dd5985b8c3d4cc7 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 12 Oct 2022 16:49:29 +0800 Subject: [PATCH 1/2] Fix storage policies not showing policies with bucket id as variable --- studio/components/to-be-cleaned/Storage/Storage.utils.ts | 9 +++++---- .../Storage/StoragePolicies/StoragePolicies.js | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/studio/components/to-be-cleaned/Storage/Storage.utils.ts b/studio/components/to-be-cleaned/Storage/Storage.utils.ts index 0b60bade9af..3381687db15 100644 --- a/studio/components/to-be-cleaned/Storage/Storage.utils.ts +++ b/studio/components/to-be-cleaned/Storage/Storage.utils.ts @@ -18,7 +18,7 @@ export const shortHash = (str: string) => { * Output: [{ bucket: , policies: }] * @param {Array} policies: All policies from a table in a schema */ -export const formatPoliciesForStorage = (policies: any[]) => { +export const formatPoliciesForStorage = (buckets: any[], policies: any[]) => { if (policies.length === 0) return policies /** @@ -28,7 +28,7 @@ export const formatPoliciesForStorage = (policies: any[]) => { * - Strip away bucket_id from definitions * Note, if the policy definition has no bucket_id, we skip the formatting */ - const formattedPolicies = formatStoragePolicies(policies) + const formattedPolicies = formatStoragePolicies(buckets, policies) /** * Package policies by grouping them by bucket: @@ -40,7 +40,8 @@ export const formatPoliciesForStorage = (policies: any[]) => { } /* Start: Internal methods to support formatPoliciesForStorage but exported for tests to cover */ -export const formatStoragePolicies = (policies: any[]) => { +export const formatStoragePolicies = (buckets: any[], policies: any[]) => { + const availableBuckets = buckets.map((bucket) => bucket.name) const formattedPolicies = policies.map((policy) => { const { definition: policyDefinition, check: policyCheck } = policy @@ -49,7 +50,7 @@ export const formatStoragePolicies = (policies: any[]) => { ? extractBucketNameFromDefinition(policyDefinition) : extractBucketNameFromDefinition(policyCheck) - if (bucketName) { + if (bucketName && availableBuckets.includes(bucketName)) { // [JOSHEN TODO] We cannot override definition here anymore cause we're gonna be using the auth editor // const definition = policyDefinition !== null ? policyDefinition : policyCheck return { diff --git a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePolicies.js b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePolicies.js index 80958ef50ba..fbc5fa35425 100644 --- a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePolicies.js +++ b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePolicies.js @@ -35,7 +35,7 @@ const StoragePolicies = () => { // Policies under storage.objects const storageObjectsPolicies = filter(policies, { table: 'objects' }) - const formattedStorageObjectPolicies = formatPoliciesForStorage(storageObjectsPolicies) + const formattedStorageObjectPolicies = formatPoliciesForStorage(buckets, storageObjectsPolicies) const ungroupedPolicies = get( find(formattedStorageObjectPolicies, { name: 'Ungrouped' }), ['policies'], From 513486145464dc8ab0c6e0fa2415bd85613970ce Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Thu, 13 Oct 2022 16:13:14 +1100 Subject: [PATCH 2/2] fix build --- studio/components/layouts/StorageLayout/StorageLayout.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/studio/components/layouts/StorageLayout/StorageLayout.tsx b/studio/components/layouts/StorageLayout/StorageLayout.tsx index 0aa2181bc65..6f6c3a13491 100644 --- a/studio/components/layouts/StorageLayout/StorageLayout.tsx +++ b/studio/components/layouts/StorageLayout/StorageLayout.tsx @@ -36,6 +36,7 @@ const StorageLayout: FC = ({ title, children }) => { createBucket, deleteBucket, toggleBucketPublic, + buckets, } = storageExplorerStore || {} const { services, isLoading } = useProjectSettings(ref as string | undefined) @@ -76,7 +77,10 @@ const StorageLayout: FC = ({ title, children }) => { if (res) { const policies = meta.policies.list() const storageObjectsPolicies = filter(policies, { table: 'objects' }) - const formattedStorageObjectPolicies = formatPoliciesForStorage(storageObjectsPolicies) + const formattedStorageObjectPolicies = formatPoliciesForStorage( + buckets, + storageObjectsPolicies + ) const bucketPolicies = _get( find(formattedStorageObjectPolicies, { name: bucket.name }), ['policies'],