Skip to content

Commit 1a78eb8

Browse files
authored
fix: token issue when creating specific/all buckets token (#3835)
* fix: token issue when creating specific/all buckets token * fix: tokens permission selection for all bucekts/telegrafs and specific ones * fix: prettier * fix: permissions test
1 parent 9267186 commit 1a78eb8

File tree

4 files changed

+38
-35
lines changed

4 files changed

+38
-35
lines changed

src/authorizations/components/EditResourceAccordion.tsx

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ const Filter = FilterList<Resource>()
2121
export class EditResourceAccordion extends Component<Props> {
2222
public render() {
2323
const {permissions} = this.props
24-
if (!permissions) {
24+
if (!permissions || isEmpty(permissions)) {
2525
return null
2626
}
27+
2728
const allResourceNames = formatResources(Object.keys(permissions))
2829

2930
return (
@@ -37,15 +38,16 @@ export class EditResourceAccordion extends Component<Props> {
3738
return (
3839
<Accordion key={resource} expanded={true}>
3940
<ResourceAccordionHeader resourceName={resourceName} />
40-
{isEmpty(permissions[resource].sublevelPermissions) ? (
41+
{this.hideAllAccordion(permissions[resource]) ? null : (
4142
<AllAccordionBody
4243
resourceName={resourceName}
4344
permissions={permissions[resource]}
4445
disabled={true}
4546
/>
46-
) : (
47-
this.getAccordionBody(resourceName, resource)
4847
)}
48+
{this.hideAccordionBody(permissions[resource])
49+
? this.getAccordionBody(resourceName, resource)
50+
: null}
4951
</Accordion>
5052
)
5153
}
@@ -60,6 +62,24 @@ export class EditResourceAccordion extends Component<Props> {
6062
)
6163
}
6264

65+
hideAllAccordion = resource => {
66+
// if all resource read or all resource write is selected then don't hide all accordion body
67+
if (!resource.read && !resource.write) {
68+
return true
69+
}
70+
return false
71+
}
72+
73+
hideAccordionBody = resource => {
74+
// if all resource read and all resource write is selected then collapse accordion body
75+
if (resource.read && resource.write) {
76+
return false
77+
} else if (isEmpty(resource.sublevelPermissions)) {
78+
return false
79+
}
80+
return true
81+
}
82+
6383
getOtherResourceAccordionBody = allResourceNames => {
6484
const {permissions, searchTerm} = this.props
6585
const resourcePermissions = []

src/authorizations/components/ResourceAccordion.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class ResourceAccordion extends Component<OwnProps> {
5858
onToggleAll={onToggleAll}
5959
disabled={false}
6060
/>
61-
{!permissions[resource].read && !permissions[resource].write
61+
{this.isCollapsible(resource)
6262
? !isEmpty(permissions[resource].sublevelPermissions) &&
6363
this.getAccordionBody(resourceName, resource)
6464
: null}
@@ -80,8 +80,7 @@ class ResourceAccordion extends Component<OwnProps> {
8080
onToggleAll={onToggleAll}
8181
disabled={false}
8282
/>
83-
{!permissions.otherResources.read &&
84-
!permissions.otherResources.write
83+
{this.isCollapsible('otherResources')
8584
? this.otherResourcesAccordionBody()
8685
: null}
8786
</DapperScrollbars>
@@ -90,6 +89,15 @@ class ResourceAccordion extends Component<OwnProps> {
9089
)
9190
}
9291

92+
isCollapsible = resource => {
93+
const {permissions} = this.props
94+
// if all resource read and all resource write is selected then collapse accordion body
95+
if (permissions[resource].read && permissions[resource].write) {
96+
return false
97+
}
98+
return true
99+
}
100+
93101
otherResourcesAccordionBody = () => {
94102
const {onToggleAll, resources, permissions} = this.props
95103
const resourcePermissions = []

src/authorizations/utils/permissions.test.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -805,8 +805,8 @@ const nonAllAcessAccordionPerms = {
805805

806806
const nonAllAcessAccordionPerms2 = {
807807
buckets: {
808-
read: true,
809-
write: true,
808+
read: false,
809+
write: false,
810810
sublevelPermissions: {
811811
'25a6692ba25d7147': {
812812
id: '25a6692ba25d7147',
@@ -888,11 +888,6 @@ describe('Testing formatPermissionsObj function', () => {
888888
nonAllAcessAccordionPerms2
889889
)
890890
})
891-
test('if all sublevel permissions are true, it updates the top level perms to true', () => {
892-
expect(formatPermissionsObj(nonAllAcessApiPerms)).toEqual(
893-
nonAllAcessAccordionPerms2
894-
)
895-
})
896891
test('for all access permissions, it creates an all access accordion api permission', () => {
897892
expect(formatPermissionsObj(orgsApiPerm)).toMatchObject(orgsAccordionPerm)
898893
})

src/authorizations/utils/permissions.ts

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -158,34 +158,14 @@ export const formatPermissionsObj = permissions => {
158158
accordionPermission = {
159159
read: action === 'read',
160160
write: action === 'write',
161+
sublevelPermissions: {},
161162
}
162163
}
163164
}
164165

165166
return {...acc, [type]: accordionPermission}
166167
}, {})
167168

168-
Object.keys(newPerms).forEach(resource => {
169-
const accordionPermission = {...newPerms[resource]}
170-
if (accordionPermission.sublevelPermissions) {
171-
accordionPermission.read = Object.keys(
172-
accordionPermission.sublevelPermissions
173-
).every(
174-
key =>
175-
accordionPermission.sublevelPermissions[key].permissions.read === true
176-
)
177-
178-
accordionPermission.write = Object.keys(
179-
accordionPermission.sublevelPermissions
180-
).every(
181-
key =>
182-
accordionPermission.sublevelPermissions[key].permissions.write ===
183-
true
184-
)
185-
186-
newPerms[resource] = accordionPermission
187-
}
188-
})
189169
return newPerms
190170
}
191171

0 commit comments

Comments
 (0)