Skip to content

Commit 47b47bc

Browse files
authored
fix: EditTokenOverlay doesn't fail when viewing buckets/telegrafs tokens (#3342)
* fix: no need to fetch bucket/telegraf when no id in resource token * fix: add type enum for all hard coded telegraf/buckets * fix: prettier
1 parent 1eeade7 commit 47b47bc

File tree

4 files changed

+31
-17
lines changed

4 files changed

+31
-17
lines changed

src/authorizations/components/redesigned/CustomApiTokenOverlay.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,9 @@ const CustomApiTokenOverlay: FC<Props> = props => {
8888
otherResources: {read: false, write: false},
8989
}
9090
props.allResources.forEach(resource => {
91-
if (resource === 'telegrafs') {
91+
if (resource === ResourceType.Telegrafs) {
9292
perms[resource] = props.telegrafPermissions
93-
} else if (resource === 'buckets') {
93+
} else if (resource === ResourceType.Buckets) {
9494
perms[resource] = props.bucketPermissions
9595
} else {
9696
perms[resource] = {read: false, write: false}
@@ -133,8 +133,8 @@ const CustomApiTokenOverlay: FC<Props> = props => {
133133
if (name === 'otherResources') {
134134
Object.keys(newPerm).forEach(key => {
135135
if (
136-
key !== 'buckets' &&
137-
key !== 'telegrafs' &&
136+
key !== ResourceType.Buckets &&
137+
key !== ResourceType.Telegrafs &&
138138
key !== 'otherResources'
139139
) {
140140
newPerm[key][permission] = !newPerm[key][permission]
@@ -181,11 +181,12 @@ const CustomApiTokenOverlay: FC<Props> = props => {
181181
let noTelegrafWritePermSelected
182182

183183
const bucketsTelegrafs = Object.keys(permissions).filter(
184-
resource => resource === 'buckets' || resource === 'telegrafs'
184+
resource =>
185+
resource === ResourceType.Buckets || resource === ResourceType.Telegrafs
185186
)
186187

187188
bucketsTelegrafs.forEach(resource => {
188-
if (resource === 'buckets') {
189+
if (resource === ResourceType.Buckets) {
189190
noBucketReadPermSelected = Object.keys(
190191
newPerm[resource].sublevelPermissions
191192
).every(

src/authorizations/components/redesigned/EditTokenOverlay.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {EditResourceAccordion} from 'src/authorizations/components/redesigned/Ed
2424
import SearchWidget from 'src/shared/components/search_widget/SearchWidget'
2525

2626
// Types
27-
import {Authorization} from 'src/types'
27+
import {Authorization, ResourceType} from 'src/types'
2828

2929
// Actions
3030
import {updateAuthorization} from 'src/authorizations/actions/thunks'
@@ -74,14 +74,20 @@ const EditTokenOverlay: FC<Props> = props => {
7474
for (let i = 0; i < permissions.length; i++) {
7575
const name = permissions[i].resource.name
7676
if (!name) {
77-
if (permissions[i].resource.type === 'telegrafs') {
77+
if (
78+
permissions[i].resource.type === ResourceType.Telegrafs &&
79+
permissions[i].resource.id
80+
) {
7881
try {
7982
const telegraf = await props.getTelegraf(permissions[i].resource.id)
8083
newPerms[i].resource.name = telegraf
8184
} catch (e) {
8285
newPerms[i].resource.name = 'Resource deleted'
8386
}
84-
} else if (permissions[i].resource.type === 'buckets') {
87+
} else if (
88+
permissions[i].resource.type === ResourceType.Buckets &&
89+
permissions[i].resource.id
90+
) {
8591
try {
8692
const bucket = await props.getBucketSchema(
8793
permissions[i].resource.id

src/authorizations/components/redesigned/IndividualAccordionBody.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
InputToggleType,
1616
} from '@influxdata/clockface'
1717
import {PermissionType} from 'src/types/tokens'
18+
import {ResourceType} from 'src/types'
1819

1920
interface Props {
2021
resourceName: string
@@ -28,7 +29,7 @@ export const IndividualAccordionBody: FC<Props> = props => {
2829
const {resourceName, permissions, onToggle, title, disabled} = props
2930
let sortedPermissions
3031

31-
if (resourceName === 'buckets') {
32+
if (resourceName === ResourceType.Buckets) {
3233
// re-order buckets: user buckets first followed by system buckets
3334
const systemBuckets = []
3435
const userBuckets = []

src/authorizations/utils/permissions.ts

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Bucket, Permission} from 'src/types'
1+
import {Bucket, Permission, ResourceType} from 'src/types'
22
import {CLOUD} from 'src/shared/constants'
33
import {capitalize} from 'lodash'
44

@@ -146,12 +146,12 @@ export enum BucketTab {
146146

147147
export const formatResources = resourceNames => {
148148
const resources = resourceNames.filter(
149-
item => item !== 'buckets' && item !== 'telegrafs'
149+
item => item !== ResourceType.Buckets && item !== ResourceType.Telegrafs
150150
)
151151
resources.sort()
152-
resources.unshift('telegrafs')
153-
resources.unshift('buckets')
154-
const indexToSplit = resources.indexOf('telegrafs')
152+
resources.unshift(ResourceType.Telegrafs)
153+
resources.unshift(ResourceType.Buckets)
154+
const indexToSplit = resources.indexOf(ResourceType.Telegrafs)
155155
const first = resources.slice(0, indexToSplit + 1)
156156
const second = resources.slice(indexToSplit + 1)
157157
return [first, second]
@@ -164,7 +164,10 @@ export const formatPermissionsObj = permissions => {
164164

165165
if (acc.hasOwnProperty(type)) {
166166
accordionPermission = {...acc[type]}
167-
if (id && (type === 'buckets' || type === 'telegrafs')) {
167+
if (
168+
id &&
169+
(type === ResourceType.Buckets || type === ResourceType.Telegrafs)
170+
) {
168171
if (accordionPermission.sublevelPermissions.hasOwnProperty(id)) {
169172
accordionPermission.sublevelPermissions[id].permissions[action] = true
170173
} else {
@@ -182,7 +185,10 @@ export const formatPermissionsObj = permissions => {
182185
accordionPermission[action] = true
183186
}
184187
} else {
185-
if (id && (type === 'buckets' || type === 'telegrafs')) {
188+
if (
189+
id &&
190+
(type === ResourceType.Buckets || type === ResourceType.Telegrafs)
191+
) {
186192
accordionPermission = {
187193
read: false,
188194
write: false,

0 commit comments

Comments
 (0)