mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-06 01:12:03 +00:00
repair share btn control bug
This commit is contained in:
@@ -46,7 +46,6 @@ const propTypes = {
|
|||||||
// list
|
// list
|
||||||
isDirentListLoading: PropTypes.bool.isRequired,
|
isDirentListLoading: PropTypes.bool.isRequired,
|
||||||
direntList: PropTypes.array.isRequired,
|
direntList: PropTypes.array.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
sortBy: PropTypes.string.isRequired,
|
sortBy: PropTypes.string.isRequired,
|
||||||
sortOrder: PropTypes.string.isRequired,
|
sortOrder: PropTypes.string.isRequired,
|
||||||
sortItems: PropTypes.func.isRequired,
|
sortItems: PropTypes.func.isRequired,
|
||||||
@@ -205,7 +204,6 @@ class DirColumnView extends React.Component {
|
|||||||
updateUsedRepoTags={this.props.updateUsedRepoTags}
|
updateUsedRepoTags={this.props.updateUsedRepoTags}
|
||||||
isDirentListLoading={this.props.isDirentListLoading}
|
isDirentListLoading={this.props.isDirentListLoading}
|
||||||
direntList={this.props.direntList}
|
direntList={this.props.direntList}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
sortBy={this.props.sortBy}
|
sortBy={this.props.sortBy}
|
||||||
sortOrder={this.props.sortOrder}
|
sortOrder={this.props.sortOrder}
|
||||||
sortItems={this.props.sortItems}
|
sortItems={this.props.sortItems}
|
||||||
|
@@ -26,7 +26,6 @@ const propTypes = {
|
|||||||
isDirentDetailShow: PropTypes.bool.isRequired,
|
isDirentDetailShow: PropTypes.bool.isRequired,
|
||||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||||
updateDirent: PropTypes.func.isRequired,
|
updateDirent: PropTypes.func.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
showDirentDetail: PropTypes.func.isRequired,
|
showDirentDetail: PropTypes.func.isRequired,
|
||||||
onAddFolder: PropTypes.func.isRequired,
|
onAddFolder: PropTypes.func.isRequired,
|
||||||
onFileTagChanged: PropTypes.func,
|
onFileTagChanged: PropTypes.func,
|
||||||
@@ -72,7 +71,6 @@ class DirGridView extends React.Component {
|
|||||||
onItemCopy={this.props.onItemCopy}
|
onItemCopy={this.props.onItemCopy}
|
||||||
isDirentListLoading={this.props.isDirentListLoading}
|
isDirentListLoading={this.props.isDirentListLoading}
|
||||||
updateDirent={this.props.updateDirent}
|
updateDirent={this.props.updateDirent}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
onRenameNode={this.props.onRenameNode}
|
onRenameNode={this.props.onRenameNode}
|
||||||
showDirentDetail={this.props.showDirentDetail}
|
showDirentDetail={this.props.showDirentDetail}
|
||||||
onGridItemClick={this.props.onGridItemClick}
|
onGridItemClick={this.props.onGridItemClick}
|
||||||
|
@@ -17,7 +17,6 @@ const propTypes = {
|
|||||||
updateUsedRepoTags: PropTypes.func.isRequired,
|
updateUsedRepoTags: PropTypes.func.isRequired,
|
||||||
isDirentListLoading: PropTypes.bool.isRequired,
|
isDirentListLoading: PropTypes.bool.isRequired,
|
||||||
direntList: PropTypes.array.isRequired,
|
direntList: PropTypes.array.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
sortBy: PropTypes.string.isRequired,
|
sortBy: PropTypes.string.isRequired,
|
||||||
sortOrder: PropTypes.string.isRequired,
|
sortOrder: PropTypes.string.isRequired,
|
||||||
sortItems: PropTypes.func.isRequired,
|
sortItems: PropTypes.func.isRequired,
|
||||||
@@ -75,7 +74,6 @@ class DirListView extends React.Component {
|
|||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
direntList={this.props.direntList}
|
direntList={this.props.direntList}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
sortBy={this.props.sortBy}
|
sortBy={this.props.sortBy}
|
||||||
sortOrder={this.props.sortOrder}
|
sortOrder={this.props.sortOrder}
|
||||||
sortItems={this.props.sortItems}
|
sortItems={this.props.sortItems}
|
||||||
|
@@ -34,7 +34,6 @@ const propTypes = {
|
|||||||
onItemClick: PropTypes.func.isRequired,
|
onItemClick: PropTypes.func.isRequired,
|
||||||
isDirentListLoading: PropTypes.bool.isRequired,
|
isDirentListLoading: PropTypes.bool.isRequired,
|
||||||
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
isGroupOwnedRepo: PropTypes.bool.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
enableDirPrivateShare: PropTypes.bool.isRequired,
|
enableDirPrivateShare: PropTypes.bool.isRequired,
|
||||||
updateDirent: PropTypes.func.isRequired,
|
updateDirent: PropTypes.func.isRequired,
|
||||||
isDirentDetailShow: PropTypes.bool.isRequired,
|
isDirentDetailShow: PropTypes.bool.isRequired,
|
||||||
@@ -407,12 +406,15 @@ class DirentGridView extends React.Component{
|
|||||||
|
|
||||||
let type = dirent.type;
|
let type = dirent.type;
|
||||||
let permission = dirent.permission;
|
let permission = dirent.permission;
|
||||||
|
let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, permission, dirent);
|
||||||
let menuList = [];
|
let menuList = [];
|
||||||
let contextmenuList = [];
|
let contextmenuList = [];
|
||||||
if (isContextmenu) {
|
if (isContextmenu) {
|
||||||
let { SHARE, DOWNLOAD, DELETE } = TextTranslation;
|
let { SHARE, DOWNLOAD, DELETE } = TextTranslation;
|
||||||
contextmenuList = this.props.showShareBtn ? [SHARE] : [];
|
|
||||||
|
if (showShareBtn) {
|
||||||
|
contextmenuList = [SHARE];
|
||||||
|
}
|
||||||
|
|
||||||
if (dirent.permission === 'rw' || dirent.permission === 'r') {
|
if (dirent.permission === 'rw' || dirent.permission === 'r') {
|
||||||
contextmenuList = [...contextmenuList, DOWNLOAD];
|
contextmenuList = [...contextmenuList, DOWNLOAD];
|
||||||
|
@@ -22,7 +22,6 @@ const propTypes = {
|
|||||||
path: PropTypes.string.isRequired,
|
path: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired,
|
repoID: PropTypes.string.isRequired,
|
||||||
isItemFreezed: PropTypes.bool.isRequired,
|
isItemFreezed: PropTypes.bool.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
dirent: PropTypes.object.isRequired,
|
dirent: PropTypes.object.isRequired,
|
||||||
onItemClick: PropTypes.func.isRequired,
|
onItemClick: PropTypes.func.isRequired,
|
||||||
freezeItem: PropTypes.func.isRequired,
|
freezeItem: PropTypes.func.isRequired,
|
||||||
@@ -458,10 +457,11 @@ class DirentListItem extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderItemOperation = () => {
|
renderItemOperation = () => {
|
||||||
let { dirent, selectedDirentList, currentRepoInfo, showShareBtn } = this.props;
|
let { dirent, selectedDirentList, currentRepoInfo } = this.props;
|
||||||
if (currentRepoInfo.permission === 'cloud-edit' || currentRepoInfo.permission === 'preview') {
|
if (currentRepoInfo.permission === 'cloud-edit' || currentRepoInfo.permission === 'preview') {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, dirent.permission, dirent);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
|
@@ -25,7 +25,6 @@ const propTypes = {
|
|||||||
isAllItemSelected: PropTypes.bool.isRequired,
|
isAllItemSelected: PropTypes.bool.isRequired,
|
||||||
isDirentListLoading: PropTypes.bool.isRequired,
|
isDirentListLoading: PropTypes.bool.isRequired,
|
||||||
direntList: PropTypes.array.isRequired,
|
direntList: PropTypes.array.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
sortBy: PropTypes.string.isRequired,
|
sortBy: PropTypes.string.isRequired,
|
||||||
sortOrder: PropTypes.string.isRequired,
|
sortOrder: PropTypes.string.isRequired,
|
||||||
sortItems: PropTypes.func.isRequired,
|
sortItems: PropTypes.func.isRequired,
|
||||||
@@ -468,13 +467,17 @@ class DirentListView extends React.Component {
|
|||||||
|
|
||||||
let type = dirent.type;
|
let type = dirent.type;
|
||||||
let permission = dirent.permission;
|
let permission = dirent.permission;
|
||||||
|
let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, permission, dirent);
|
||||||
|
|
||||||
let menuList = [];
|
let menuList = [];
|
||||||
let contextmenuList = [];
|
let contextmenuList = [];
|
||||||
|
|
||||||
if (isContextmenu) {
|
if (isContextmenu) {
|
||||||
let { SHARE, DOWNLOAD, DELETE } = TextTranslation;
|
let { SHARE, DOWNLOAD, DELETE } = TextTranslation;
|
||||||
contextmenuList = this.props.showShareBtn ? [SHARE] : [];
|
|
||||||
|
if (showShareBtn) {
|
||||||
|
contextmenuList = [SHARE];
|
||||||
|
}
|
||||||
|
|
||||||
if (dirent.permission === 'rw' || dirent.permission === 'r') {
|
if (dirent.permission === 'rw' || dirent.permission === 'r') {
|
||||||
contextmenuList = [...contextmenuList, DOWNLOAD];
|
contextmenuList = [...contextmenuList, DOWNLOAD];
|
||||||
@@ -485,14 +488,15 @@ class DirentListView extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
contextmenuList = [...contextmenuList, 'Divider'];
|
contextmenuList = [...contextmenuList, 'Divider'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let { RENAME, MOVE, COPY, PERMISSION, OPEN_VIA_CLIENT, LOCK, UNLOCK, COMMENT, HISTORY, ACCESS_LOG, TAGS } = TextTranslation;
|
let { RENAME, MOVE, COPY, PERMISSION, OPEN_VIA_CLIENT, LOCK, UNLOCK, COMMENT, HISTORY, ACCESS_LOG, TAGS } = TextTranslation;
|
||||||
if (type === 'dir' && permission === 'rw') {
|
if (type === 'dir' && permission === 'rw') {
|
||||||
if (can_set_folder_perm) {
|
if (can_set_folder_perm) {
|
||||||
menuList = [...menuList, RENAME, MOVE, COPY, 'Divider', PERMISSION, 'Divider', OPEN_VIA_CLIENT];
|
menuList = [...contextmenuList, RENAME, MOVE, COPY, 'Divider', PERMISSION, 'Divider', OPEN_VIA_CLIENT];
|
||||||
} else {
|
} else {
|
||||||
menuList = [...menuList, RENAME, MOVE, COPY, 'Divider', OPEN_VIA_CLIENT];
|
menuList = [...contextmenuList, RENAME, MOVE, COPY, 'Divider', OPEN_VIA_CLIENT];
|
||||||
}
|
}
|
||||||
return menuList;
|
return menuList;
|
||||||
}
|
}
|
||||||
@@ -659,7 +663,6 @@ class DirentListView extends React.Component {
|
|||||||
repoEncrypted={this.repoEncrypted}
|
repoEncrypted={this.repoEncrypted}
|
||||||
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
enableDirPrivateShare={this.props.enableDirPrivateShare}
|
||||||
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
isGroupOwnedRepo={this.props.isGroupOwnedRepo}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
onItemClick={this.props.onItemClick}
|
onItemClick={this.props.onItemClick}
|
||||||
onItemRenameToggle={this.onItemRenameToggle}
|
onItemRenameToggle={this.onItemRenameToggle}
|
||||||
onItemSelected={this.onItemSelected}
|
onItemSelected={this.onItemSelected}
|
||||||
|
@@ -32,7 +32,6 @@ const propTypes = {
|
|||||||
onFilesTagChanged: PropTypes.func.isRequired,
|
onFilesTagChanged: PropTypes.func.isRequired,
|
||||||
unSelectDirent: PropTypes.func.isRequired,
|
unSelectDirent: PropTypes.func.isRequired,
|
||||||
updateDirent: PropTypes.func.isRequired,
|
updateDirent: PropTypes.func.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class MutipleDirOperationToolbar extends React.Component {
|
class MutipleDirOperationToolbar extends React.Component {
|
||||||
@@ -90,18 +89,19 @@ class MutipleDirOperationToolbar extends React.Component {
|
|||||||
getDirentMenuList = (dirent) => {
|
getDirentMenuList = (dirent) => {
|
||||||
let menuList = [];
|
let menuList = [];
|
||||||
let currentRepoInfo = this.props.currentRepoInfo;
|
let currentRepoInfo = this.props.currentRepoInfo;
|
||||||
|
let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, dirent.permission, dirent);
|
||||||
|
|
||||||
const { SHARE, TAGS, RELATED_FILES, HISTORY, ACCESS_LOG, OPEN_VIA_CLIENT, LOCK, UNLOCK } = TextTranslation;
|
const { SHARE, TAGS, RELATED_FILES, HISTORY, ACCESS_LOG, OPEN_VIA_CLIENT, LOCK, UNLOCK } = TextTranslation;
|
||||||
|
|
||||||
|
|
||||||
if (dirent.type === 'dir') {
|
if (dirent.type === 'dir') {
|
||||||
let shareBtn = this.props.showShareBtn ? [SHARE] : [];
|
if (showShareBtn) {
|
||||||
menuList = [...shareBtn];
|
menuList = [SHARE];
|
||||||
|
}
|
||||||
return menuList;
|
return menuList;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dirent.type === 'file') {
|
if (dirent.type === 'file') {
|
||||||
let shareBtn = (this.props.showShareBtn && canGenerateShareLink) ? [SHARE] : [];
|
let shareBtn = showShareBtn ? [SHARE] : [];
|
||||||
|
|
||||||
menuList = [...shareBtn, TAGS, RELATED_FILES, 'Divider', HISTORY, ACCESS_LOG, 'Divider', OPEN_VIA_CLIENT];
|
menuList = [...shareBtn, TAGS, RELATED_FILES, 'Divider', HISTORY, ACCESS_LOG, 'Divider', OPEN_VIA_CLIENT];
|
||||||
if (!Utils.isMarkdownFile(dirent.name)) {
|
if (!Utils.isMarkdownFile(dirent.name)) {
|
||||||
|
@@ -58,7 +58,6 @@ const propTypes = {
|
|||||||
// list
|
// list
|
||||||
isDirentListLoading: PropTypes.bool.isRequired,
|
isDirentListLoading: PropTypes.bool.isRequired,
|
||||||
direntList: PropTypes.array.isRequired,
|
direntList: PropTypes.array.isRequired,
|
||||||
showShareBtn: PropTypes.bool.isRequired,
|
|
||||||
sortBy: PropTypes.string.isRequired,
|
sortBy: PropTypes.string.isRequired,
|
||||||
sortOrder: PropTypes.string.isRequired,
|
sortOrder: PropTypes.string.isRequired,
|
||||||
sortItems: PropTypes.func.isRequired,
|
sortItems: PropTypes.func.isRequired,
|
||||||
@@ -203,7 +202,6 @@ class LibContentContainer extends React.Component {
|
|||||||
updateUsedRepoTags={this.props.updateUsedRepoTags}
|
updateUsedRepoTags={this.props.updateUsedRepoTags}
|
||||||
isDirentListLoading={this.props.isDirentListLoading}
|
isDirentListLoading={this.props.isDirentListLoading}
|
||||||
direntList={this.props.direntList}
|
direntList={this.props.direntList}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
sortBy={this.props.sortBy}
|
sortBy={this.props.sortBy}
|
||||||
sortOrder={this.props.sortOrder}
|
sortOrder={this.props.sortOrder}
|
||||||
sortItems={this.props.sortItems}
|
sortItems={this.props.sortItems}
|
||||||
@@ -250,7 +248,6 @@ class LibContentContainer extends React.Component {
|
|||||||
onItemCopy={this.props.onItemCopy}
|
onItemCopy={this.props.onItemCopy}
|
||||||
updateDirent={this.props.updateDirent}
|
updateDirent={this.props.updateDirent}
|
||||||
onAddFolder={this.props.onAddFolder}
|
onAddFolder={this.props.onAddFolder}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
showDirentDetail={this.props.showDirentDetail}
|
showDirentDetail={this.props.showDirentDetail}
|
||||||
onGridItemClick={this.onGridItemClick}
|
onGridItemClick={this.onGridItemClick}
|
||||||
isDirentDetailShow={this.props.isDirentDetailShow}
|
isDirentDetailShow={this.props.isDirentDetailShow}
|
||||||
@@ -295,7 +292,6 @@ class LibContentContainer extends React.Component {
|
|||||||
updateUsedRepoTags={this.props.updateUsedRepoTags}
|
updateUsedRepoTags={this.props.updateUsedRepoTags}
|
||||||
isDirentListLoading={this.props.isDirentListLoading}
|
isDirentListLoading={this.props.isDirentListLoading}
|
||||||
direntList={this.props.direntList}
|
direntList={this.props.direntList}
|
||||||
showShareBtn={this.props.showShareBtn}
|
|
||||||
sortBy={this.props.sortBy}
|
sortBy={this.props.sortBy}
|
||||||
sortOrder={this.props.sortOrder}
|
sortOrder={this.props.sortOrder}
|
||||||
sortItems={this.props.sortItems}
|
sortItems={this.props.sortItems}
|
||||||
|
@@ -1480,33 +1480,11 @@ class LibContentView extends React.Component {
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
let showShareBtn = false;
|
|
||||||
let enableDirPrivateShare = false;
|
let enableDirPrivateShare = false;
|
||||||
let { currentRepoInfo, repoEncrypted, userPerm } = this.state;
|
let { currentRepoInfo, userPerm } = this.state;
|
||||||
let isAdmin = currentRepoInfo.is_admin;
|
let showShareBtn = Utils.isHasPermissionToShare(currentRepoInfo, userPerm);
|
||||||
let isVirtual = currentRepoInfo.is_virtual;
|
|
||||||
let isRepoOwner = currentRepoInfo.owner_email === username;
|
let isRepoOwner = currentRepoInfo.owner_email === username;
|
||||||
|
|
||||||
if (!repoEncrypted) {
|
|
||||||
let showGenerateShareLinkTab = false;
|
|
||||||
if (canGenerateShareLink && (userPerm == 'rw' || userPerm == 'r')) {
|
|
||||||
showGenerateShareLinkTab = true;
|
|
||||||
}
|
|
||||||
let showGenerateUploadLinkTab = false;
|
|
||||||
if (canGenerateUploadLink && (userPerm == 'rw')) {
|
|
||||||
showGenerateUploadLinkTab = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isVirtual && (isRepoOwner || isAdmin)) {
|
|
||||||
enableDirPrivateShare = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (showGenerateShareLinkTab || showGenerateUploadLinkTab || enableDirPrivateShare) {
|
|
||||||
showShareBtn = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
let direntItemsList = this.state.direntList.filter((item, index) => {
|
let direntItemsList = this.state.direntList.filter((item, index) => {
|
||||||
return index < this.state.itemsShowLength;
|
return index < this.state.itemsShowLength;
|
||||||
});
|
});
|
||||||
@@ -1599,7 +1577,6 @@ class LibContentView extends React.Component {
|
|||||||
updateUsedRepoTags={this.updateUsedRepoTags}
|
updateUsedRepoTags={this.updateUsedRepoTags}
|
||||||
isDirentListLoading={this.state.isDirentListLoading}
|
isDirentListLoading={this.state.isDirentListLoading}
|
||||||
direntList={direntItemsList}
|
direntList={direntItemsList}
|
||||||
showShareBtn={showShareBtn}
|
|
||||||
sortBy={this.state.sortBy}
|
sortBy={this.state.sortBy}
|
||||||
sortOrder={this.state.sortOrder}
|
sortOrder={this.state.sortOrder}
|
||||||
sortItems={this.sortItems}
|
sortItems={this.sortItems}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { mediaUrl, gettext, serviceURL, siteRoot } from './constants';
|
import { mediaUrl, gettext, serviceURL, siteRoot, canGenerateShareLink, canGenerateUploadLink, username } from './constants';
|
||||||
import { strChineseFirstPY } from './pinyin-by-unicode';
|
import { strChineseFirstPY } from './pinyin-by-unicode';
|
||||||
|
|
||||||
export const Utils = {
|
export const Utils = {
|
||||||
@@ -901,6 +901,50 @@ export const Utils = {
|
|||||||
}
|
}
|
||||||
return event.target.getAttribute('data-' + data);
|
return event.target.getAttribute('data-' + data);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* judgement user is has the permission to share.
|
||||||
|
* one scence: current repo(the root path), in the toolbar
|
||||||
|
* two scence: selected a dirent, in the toolbar
|
||||||
|
* three scence: dirent list(grid list), in the item operation menu;
|
||||||
|
*
|
||||||
|
* @param {*} repoInfo
|
||||||
|
* @param {*} userDirPermission
|
||||||
|
* @param {*} dirent
|
||||||
|
*/
|
||||||
|
isHasPermissionToShare: function(repoInfo, userDirPermission, dirent) {
|
||||||
|
let hasPermissionToShare = false;
|
||||||
|
let hasDirPrivateSharePermission = false;
|
||||||
|
|
||||||
|
let { is_admin: isAdmin, is_virtual: isVirtual, encrypted: repoEncrypted, owner_email: ownerEmail } = repoInfo;
|
||||||
|
let isRepoOwner = ownerEmail === username;
|
||||||
|
|
||||||
|
// the root path or the dirent type is dir
|
||||||
|
if (!repoEncrypted) {
|
||||||
|
let hasGenerateShareLinkPermission = false;
|
||||||
|
if (canGenerateShareLink && (userDirPermission == 'rw' || userDirPermission == 'r')) {
|
||||||
|
hasGenerateShareLinkPermission = true;
|
||||||
|
}
|
||||||
|
let hasGenerateUploadLinkPermission = false;
|
||||||
|
if (canGenerateUploadLink && (userDirPermission == 'rw')) {
|
||||||
|
hasGenerateUploadLinkPermission = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isVirtual && (isRepoOwner || isAdmin)) {
|
||||||
|
hasDirPrivateSharePermission = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasGenerateShareLinkPermission || hasGenerateUploadLinkPermission || hasDirPrivateSharePermission) {
|
||||||
|
hasPermissionToShare = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dirent && dirent.type === 'file') {
|
||||||
|
return hasPermissionToShare && canGenerateShareLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hasPermissionToShare;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user