Fix Bug 69232 - Rooms.Custom. Fixed link rights

This commit is contained in:
Nikita Gopienko 2024-07-16 12:28:41 +03:00
parent c6b04c022a
commit ac59e4b2ec
3 changed files with 22 additions and 14 deletions

View File

@ -711,12 +711,12 @@ export default inject(
const isArchive = rootFolderType === FolderType.Archive; const isArchive = rootFolderType === FolderType.Archive;
const sharedItem = navigationPath.find((r) => r.shared); const isShared = shared || navigationPath.find((r) => r.shared);
const showNavigationButton = const showNavigationButton =
isLoading || !security?.CopyLink || isPublicRoom || isArchive isLoading || !security?.CopyLink || isPublicRoom || isArchive
? false ? false
: security?.Read && (shared || sharedItem); : security?.Read && isShared;
return { return {
showText: settingsStore.showText, showText: settingsStore.showText,

View File

@ -1389,14 +1389,17 @@ class ContextOptionsStore {
item.roomType === RoomsType.FormRoom || item.roomType === RoomsType.FormRoom ||
item.roomType === RoomsType.CustomRoom; item.roomType === RoomsType.CustomRoom;
const { shared, navigationPath } = this.selectedFolderStore; const { navigationPath } = this.selectedFolderStore;
if (item.isRoom && withOpen) { if (item.isRoom && withOpen) {
withOpen = navigationPath.findIndex((f) => f.id === item.id) === -1; withOpen = navigationPath.findIndex((f) => f.id === item.id) === -1;
} }
const isArchive = item.rootFolderType === FolderType.Archive; const isArchive = item.rootFolderType === FolderType.Archive;
const isShared = shared || navigationPath.findIndex((r) => r.shared) > -1;
const hasShareLinkRights = item.shared
? item.security?.Read
: item.security?.EditAccess;
const optionsModel = [ const optionsModel = [
{ {
@ -1552,20 +1555,14 @@ class ContextOptionsStore {
label: t("Files:CopyLink"), label: t("Files:CopyLink"),
icon: InvitationLinkReactSvgUrl, icon: InvitationLinkReactSvgUrl,
onClick: () => this.onCopyLink(item, t), onClick: () => this.onCopyLink(item, t),
disabled: disabled: isPublicRoomType && hasShareLinkRights,
(isPublicRoomType && item.security?.Read && !isArchive) ||
!item.security?.CopyLink,
}, },
{ {
id: "option_copy-external-link", id: "option_copy-external-link",
key: "external-link", key: "external-link",
label: t("Files:CopySharedLink"), label: t("Files:CopySharedLink"),
icon: TabletLinkReactSvgUrl, icon: TabletLinkReactSvgUrl,
disabled: disabled: !hasShareLinkRights,
this.publicRoomStore.isPublicRoom ||
isArchive ||
!item.security?.Read ||
!isPublicRoomType,
onClick: () => this.onCreateAndCopySharedLink(item, t), onClick: () => this.onCreateAndCopySharedLink(item, t),
// onLoad: () => this.onLoadLinks(t, item), // onLoad: () => this.onLoadLinks(t, item),
}, },

View File

@ -2047,6 +2047,7 @@ class FilesStore {
const canDelete = !isEditing && item.security?.Delete; const canDelete = !isEditing && item.security?.Delete;
const canCopy = item.security?.Copy; const canCopy = item.security?.Copy;
const canCopyLink = item.security?.CopyLink;
const canDuplicate = item.security?.Duplicate; const canDuplicate = item.security?.Duplicate;
const canDownload = item.security?.Download; const canDownload = item.security?.Download;
const canEmbed = item.security?.Embed; const canEmbed = item.security?.Embed;
@ -2360,7 +2361,7 @@ class FilesStore {
fileOptions = this.removeOptions(fileOptions, ["open-location"]); fileOptions = this.removeOptions(fileOptions, ["open-location"]);
} }
if (isMyFolder || isRecycleBinFolder) { if (isMyFolder || isRecycleBinFolder || !canCopyLink) {
fileOptions = this.removeOptions(fileOptions, [ fileOptions = this.removeOptions(fileOptions, [
"link-for-room-members", "link-for-room-members",
]); ]);
@ -2403,7 +2404,6 @@ class FilesStore {
item.roomType === RoomsType.PublicRoom || item.roomType === RoomsType.PublicRoom ||
item.roomType === RoomsType.FormRoom || item.roomType === RoomsType.FormRoom ||
item.roomType === RoomsType.CustomRoom; item.roomType === RoomsType.CustomRoom;
const isCustomRoomType = item.roomType === RoomsType.CustomRoom;
let roomOptions = [ let roomOptions = [
"select", "select",
@ -2433,6 +2433,17 @@ class FilesStore {
roomOptions = this.removeOptions(roomOptions, optionsToRemove); roomOptions = this.removeOptions(roomOptions, optionsToRemove);
} }
if (isArchiveFolder) {
roomOptions = this.removeOptions(roomOptions, [
"external-link",
"link-for-room-members",
]);
}
if (!isPublicRoomType || this.publicRoomStore.isPublicRoom) {
roomOptions = this.removeOptions(roomOptions, ["external-link"]);
}
if (!canEditRoom) { if (!canEditRoom) {
roomOptions = this.removeOptions(roomOptions, [ roomOptions = this.removeOptions(roomOptions, [
"edit-room", "edit-room",