Skip to content

Commit b78cbe2

Browse files
committed
Fixed credentials search
1 parent fa63657 commit b78cbe2

File tree

7 files changed

+296
-238
lines changed

7 files changed

+296
-238
lines changed

frontend/src/components/Credentials/GCredentialDetailsItemContent.vue

Lines changed: 2 additions & 174 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ SPDX-License-Identifier: Apache-2.0
3434
</template>
3535

3636
<script>
37-
import { decodeBase64 } from '@/utils'
38-
39-
import get from 'lodash/get'
37+
import { secretDetails } from '@/composables/credential/helper'
4038
4139
export default {
4240
@@ -67,7 +65,7 @@ export default {
6765
},
6866
]
6967
} else if (this.credential?.kind === 'Secret') {
70-
const details = this.getCredentialDetails(this.credential)
68+
const details = secretDetails(this.credential, this.providerType)
7169
if (details) {
7270
return details
7371
}
@@ -89,175 +87,5 @@ export default {
8987
]
9088
},
9189
},
92-
methods: {
93-
getCredentialDetails (secret) {
94-
const secretData = secret.data || {}
95-
const getGCPProjectId = () => {
96-
const serviceAccount = get(secretData, ['serviceaccount.json'])
97-
return get(JSON.parse(decodeBase64(serviceAccount)), ['project_id'])
98-
}
99-
try {
100-
switch (this.providerType) {
101-
// infra
102-
case 'openstack':
103-
return [
104-
{
105-
label: 'Domain Name',
106-
value: decodeBase64(secretData.domainName),
107-
},
108-
{
109-
label: 'Tenant Name',
110-
value: decodeBase64(secretData.tenantName),
111-
},
112-
]
113-
case 'vsphere':
114-
return [
115-
{
116-
label: 'vSphere Username',
117-
value: decodeBase64(secretData.vsphereUsername),
118-
},
119-
{
120-
label: 'NSX-T Username',
121-
value: decodeBase64(secretData.nsxtUsername),
122-
},
123-
]
124-
case 'aws':
125-
return [
126-
{
127-
label: 'Access Key ID',
128-
value: decodeBase64(secretData.accessKeyID),
129-
},
130-
]
131-
case 'azure':
132-
return [
133-
{
134-
label: 'Subscription ID',
135-
value: decodeBase64(secretData.subscriptionID),
136-
},
137-
]
138-
case 'gcp':
139-
return [
140-
{
141-
label: 'Project',
142-
value: getGCPProjectId(),
143-
},
144-
]
145-
case 'alicloud':
146-
return [
147-
{
148-
label: 'Access Key ID',
149-
value: decodeBase64(secretData.accessKeyID),
150-
},
151-
]
152-
case 'metal':
153-
return [
154-
{
155-
label: 'API URL',
156-
value: decodeBase64(secretData.metalAPIURL),
157-
},
158-
]
159-
case 'hcloud':
160-
return [
161-
{
162-
label: 'Hetzner Cloud Token',
163-
hidden: true,
164-
},
165-
]
166-
case 'openstack-designate':
167-
return [
168-
{
169-
label: 'Domain Name',
170-
value: decodeBase64(secretData.domainName),
171-
},
172-
{
173-
label: 'Tenant Name',
174-
value: decodeBase64(secretData.tenantName),
175-
},
176-
]
177-
// dns
178-
case 'aws-route53':
179-
return [
180-
{
181-
label: 'Access Key ID',
182-
value: decodeBase64(secretData.accessKeyID),
183-
},
184-
]
185-
case 'azure-dns':
186-
case 'azure-private-dns':
187-
return [
188-
{
189-
label: 'Subscription ID',
190-
value: decodeBase64(secretData.subscriptionID),
191-
},
192-
]
193-
case 'google-clouddns':
194-
return [
195-
{
196-
label: 'Project',
197-
value: decodeBase64(secretData.project),
198-
},
199-
]
200-
case 'alicloud-dns':
201-
return [
202-
{
203-
label: 'Access Key ID',
204-
value: decodeBase64(secretData.accessKeyID),
205-
},
206-
]
207-
case 'infoblox-dns':
208-
return [
209-
{
210-
label: 'Infoblox Username',
211-
value: decodeBase64(secretData.USERNAME),
212-
},
213-
]
214-
case 'cloudflare-dns':
215-
return [
216-
{
217-
label: 'API Key',
218-
hidden: true,
219-
},
220-
]
221-
case 'netlify-dns':
222-
return [
223-
{
224-
label: 'API Key',
225-
hidden: true,
226-
},
227-
]
228-
case 'rfc2136':
229-
return [
230-
{
231-
label: 'Server',
232-
value: decodeBase64(secretData.Server),
233-
},
234-
{
235-
label: 'TSIG Key Name',
236-
value: decodeBase64(secretData.TSIGKeyName),
237-
},
238-
{
239-
label: 'Zone',
240-
value: decodeBase64(secretData.Zone),
241-
},
242-
]
243-
case 'powerdns':
244-
return [
245-
{
246-
label: 'Server',
247-
value: decodeBase64(secretData.server),
248-
},
249-
{
250-
label: 'API Key',
251-
hidden: true,
252-
},
253-
]
254-
default:
255-
return undefined
256-
}
257-
} catch (err) {
258-
return undefined
259-
}
260-
},
261-
},
26290
}
26391
</script>

frontend/src/components/Credentials/GCredentialRowDns.vue

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,43 +11,43 @@ SPDX-License-Identifier: Apache-2.0
1111
>
1212
<td v-if="selectedHeaders.name">
1313
<div class="d-flex">
14-
{{ binding.metadata.name }}
14+
{{ item.binding.metadata.name }}
1515
<g-shared-credential-icon
16-
v-if="isSharedCredential"
17-
:namespace="credentialNamespace"
16+
v-if="item.isSharedCredential"
17+
:namespace="item.credentialNamespace"
1818
/>
1919
<g-orphaned-credential-icon
20-
v-if="isOrphanedCredential"
21-
:binding="binding"
20+
v-if="item.isOrphanedCredential"
21+
:binding="item.binding"
2222
/>
2323
</div>
2424
</td>
2525
<td v-if="selectedHeaders.kind">
26-
<g-credential-icon :binding="binding" />
26+
<g-credential-icon :binding="item.binding" />
2727
</td>
2828
<td v-if="selectedHeaders.dnsProvider">
2929
<g-vendor
3030
extended
31-
:provider-type="binding.provider.type"
31+
:provider-type="item.binding.provider.type"
3232
/>
3333
</td>
3434
<td v-if="selectedHeaders.details">
3535
<g-credential-details-item-content
3636
class="py-1"
37-
:credential="credential"
38-
:shared="isSharedCredential"
39-
:provider-type="binding.provider.type"
37+
:credential="item.credential"
38+
:shared="item.isSharedCredential"
39+
:provider-type="item.binding.provider.type"
4040
/>
4141
</td>
4242
<td v-if="selectedHeaders.credentialUsageCount">
43-
<g-credential-used-by-label :used-by="credentialUsageCount" />
43+
<g-credential-used-by-label :used-by="item.credentialUsageCount" />
4444
</td>
4545
<td
4646
v-if="selectedHeaders.actions"
4747
class="text-action-button"
4848
>
4949
<g-credential-row-actions
50-
:binding="binding"
50+
:binding="item.binding"
5151
@update="onUpdate"
5252
@delete="onDelete"
5353
/>
@@ -58,7 +58,7 @@ SPDX-License-Identifier: Apache-2.0
5858
<script setup>
5959
import {
6060
computed,
61-
toRef,
61+
toRefs,
6262
} from 'vue'
6363
6464
import GVendor from '@/components/GVendor'
@@ -69,12 +69,10 @@ import GCredentialUsedByLabel from '@/components/Credentials/GCredentialUsedByLa
6969
import GSharedCredentialIcon from '@/components/Credentials/GSharedCredentialIcon.vue'
7070
import GOrphanedCredentialIcon from '@/components/Credentials/GOrphanedCredentialIcon.vue'
7171
72-
import { useCloudProviderBinding } from '@/composables/credential/useCloudProviderBinding'
73-
7472
import { mapTableHeader } from '@/utils'
7573
7674
const props = defineProps({
77-
binding: {
75+
item: {
7876
type: Object,
7977
required: true,
8078
},
@@ -88,19 +86,15 @@ const props = defineProps({
8886
},
8987
})
9088
91-
const binding = toRef(props, 'binding')
92-
9389
const {
94-
isSharedCredential,
95-
credentialNamespace,
96-
credentialUsageCount,
97-
isOrphanedCredential,
98-
credential,
99-
} = useCloudProviderBinding(binding)
90+
item,
91+
highlighted,
92+
headers,
93+
} = toRefs(props)
10094
10195
const emit = defineEmits(['update', 'delete'])
10296
103-
const selectedHeaders = computed(() => mapTableHeader(props.headers, 'selected'))
97+
const selectedHeaders = computed(() => mapTableHeader(headers.value, 'selected'))
10498
10599
function onUpdate (value) {
106100
emit('update', value)

0 commit comments

Comments
 (0)