Skip to content

Commit 95a455b

Browse files
committed
fix(backend:shares): clear cached permissions when share link permissions are changed
1 parent 13529f1 commit 95a455b

File tree

5 files changed

+8
-5
lines changed

5 files changed

+8
-5
lines changed

backend/src/applications/shares/interfaces/share-link.interface.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@ import type { FileSpace } from '../../files/interfaces/file-space.interface'
88
import type { LinkGuest } from '../../links/interfaces/link-guest.interface'
99
import type { Share } from '../schemas/share.interface'
1010

11-
export interface ShareLink extends Pick<Share, 'id' | 'name' | 'ownerId' | 'description'> {
12-
id: number
11+
export interface ShareLink extends Pick<Share, 'id' | 'name' | 'alias' | 'ownerId' | 'description'> {
1312
ownerId: number
14-
name: string
1513
externalPath: string
16-
description: string
1714
parent: Pick<Share, 'id' | 'ownerId' | 'alias' | 'name'>
1815
file: FileSpace
1916
link: Omit<LinkGuest, 'userId'>

backend/src/applications/shares/services/shares-manager.service.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ describe(SharesManager.name, () => {
9898
updateMember: jest.fn(),
9999
updateMembers: jest.fn(),
100100
shareExistsForOwner: jest.fn(),
101-
childExistsForShareOwner: jest.fn()
101+
childExistsForShareOwner: jest.fn(),
102+
clearCachePermissions: jest.fn().mockResolvedValue(true)
102103
}
103104

104105
const user = { id: 1, isAdmin: false } as any

backend/src/applications/shares/services/shares-manager.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,9 @@ export class SharesManager {
632632
// intersect permissions to ensure that the user does not attempt to exceed his rights
633633
const shareLink: ShareLink = await this.getShareLink(user, spaceOrShareId)
634634
updateMember.permissions = intersectPermissions(shareLink.file.permissions, v)
635+
this.sharesQueries
636+
.clearCachePermissions(shareLink.alias, [link.userId])
637+
.catch((e: Error) => this.logger.error(`${this.updateLinkFromSpaceOrShare.name} - ${e}`))
635638
}
636639
break
637640
case 'language':

backend/src/applications/shares/services/shares-queries.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ export class SharesQueries {
171171
const select: ShareLink | SelectedFields<any, any> = {
172172
id: shares.id,
173173
ownerId: shares.ownerId,
174+
alias: shares.alias,
174175
name: shares.name,
175176
externalPath: sql`IF (${shares.externalPath} IS NOT NULL AND ${shares.ownerId} IS NOT NULL, '.', ${shares.externalPath})`,
176177
description: shares.description,

frontend/src/app/applications/links/models/share-link.model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export class ShareLinkModel implements ShareLink {
1818
id: number
1919
ownerId: number
2020
name: string
21+
alias: string
2122
externalPath: string
2223
parent: ShareLink['parent']
2324
file: FileSpace

0 commit comments

Comments
 (0)