mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-01 15:09:14 +00:00
repair permission error
This commit is contained in:
@@ -1,12 +1,13 @@
|
|||||||
import React, { Fragment } from 'react';
|
import React, { Fragment } from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';
|
import { Modal, ModalHeader, ModalBody, TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';
|
||||||
import { gettext, canGenerateShareLink, canGenerateUploadLink } from '../../utils/constants';
|
import { gettext, username, canGenerateShareLink, canGenerateUploadLink } from '../../utils/constants';
|
||||||
import ShareToUser from './share-to-user';
|
import ShareToUser from './share-to-user';
|
||||||
import ShareToGroup from './share-to-group';
|
import ShareToGroup from './share-to-group';
|
||||||
import GenerateShareLink from './generate-share-link';
|
import GenerateShareLink from './generate-share-link';
|
||||||
import GenerateUploadLink from './generate-upload-link';
|
import GenerateUploadLink from './generate-upload-link';
|
||||||
import '../../css/share-link-dialog.css';
|
import '../../css/share-link-dialog.css';
|
||||||
|
import { seafileAPI } from '../../utils/seafile-api';
|
||||||
|
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
isGroupOwnedRepo: PropTypes.bool,
|
isGroupOwnedRepo: PropTypes.bool,
|
||||||
@@ -24,10 +25,23 @@ class ShareDialog extends React.Component {
|
|||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
activeTab: this.getInitialActiveTab()
|
activeTab: this.getInitialActiveTab(),
|
||||||
|
isRepoJudgeMent: false,
|
||||||
|
isRepoOwner: false,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
let repoID = this.props.repoID;
|
||||||
|
seafileAPI.getRepoInfo(repoID).then(res => {
|
||||||
|
let isRepoOwner = res.data.owner_email === username;
|
||||||
|
this.setState({
|
||||||
|
isRepoJudgeMent: true,
|
||||||
|
isRepoOwner: isRepoOwner,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
getInitialActiveTab = () => {
|
getInitialActiveTab = () => {
|
||||||
const {repoEncrypted, userPerm, enableDirPrivateShare} = this.props;
|
const {repoEncrypted, userPerm, enableDirPrivateShare} = this.props;
|
||||||
const enableShareLink = !repoEncrypted && canGenerateShareLink;
|
const enableShareLink = !repoEncrypted && canGenerateShareLink;
|
||||||
@@ -112,10 +126,10 @@ class ShareDialog extends React.Component {
|
|||||||
{enableDirPrivateShare &&
|
{enableDirPrivateShare &&
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<TabPane tabId="shareToUser">
|
<TabPane tabId="shareToUser">
|
||||||
<ShareToUser itemType={this.props.itemType} isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} />
|
<ShareToUser itemType={this.props.itemType} isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} isRepoOwner={this.state.isRepoOwner}/>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane tabId="shareToGroup">
|
<TabPane tabId="shareToGroup">
|
||||||
<ShareToGroup itemType={this.props.itemType} isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} />
|
<ShareToGroup itemType={this.props.itemType} isGroupOwnedRepo={this.props.isGroupOwnedRepo} itemPath={this.props.itemPath} repoID={this.props.repoID} isRepoOwner={this.state.isRepoOwner}/>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
}
|
}
|
||||||
@@ -154,6 +168,10 @@ class ShareDialog extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|
||||||
|
if (!this.state.isRepoJudgeMent) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
const { itemType, itemName, repoEncrypted } = this.props;
|
const { itemType, itemName, repoEncrypted } = this.props;
|
||||||
const enableShareLink = !repoEncrypted && canGenerateShareLink;
|
const enableShareLink = !repoEncrypted && canGenerateShareLink;
|
||||||
return (
|
return (
|
||||||
|
@@ -88,7 +88,8 @@ const propTypes = {
|
|||||||
isGroupOwnedRepo: PropTypes.bool,
|
isGroupOwnedRepo: PropTypes.bool,
|
||||||
itemPath: PropTypes.string.isRequired,
|
itemPath: PropTypes.string.isRequired,
|
||||||
itemType: PropTypes.string.isRequired,
|
itemType: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired
|
repoID: PropTypes.string.isRequired,
|
||||||
|
isRepoOwner: PropTypes.bool.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
const NoOptionsMessage = (props) => {
|
const NoOptionsMessage = (props) => {
|
||||||
@@ -109,9 +110,10 @@ class ShareToGroup extends React.Component {
|
|||||||
};
|
};
|
||||||
this.options = [];
|
this.options = [];
|
||||||
this.permissions = []
|
this.permissions = []
|
||||||
if (this.props.itemType === 'library') {
|
let { itemType, isRepoOwner } = props;
|
||||||
this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview'];
|
if (itemType === 'library') {
|
||||||
} else if (this.props.itemType === 'dir') {
|
this.permissions = isRepoOwner ? ['rw', 'r', 'admin', 'cloud-edit', 'preview'] : ['rw', 'r', 'cloud-edit', 'preview'];
|
||||||
|
} else if (itemType === 'dir') {
|
||||||
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
||||||
}
|
}
|
||||||
if (this.props.isGroupOwnedRepo || !isPro) {
|
if (this.props.isGroupOwnedRepo || !isPro) {
|
||||||
|
@@ -88,7 +88,8 @@ const propTypes = {
|
|||||||
isGroupOwnedRepo: PropTypes.bool,
|
isGroupOwnedRepo: PropTypes.bool,
|
||||||
itemPath: PropTypes.string.isRequired,
|
itemPath: PropTypes.string.isRequired,
|
||||||
itemType: PropTypes.string.isRequired,
|
itemType: PropTypes.string.isRequired,
|
||||||
repoID: PropTypes.string.isRequired
|
repoID: PropTypes.string.isRequired,
|
||||||
|
isRepoOwner: PropTypes.bool.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
class ShareToUser extends React.Component {
|
class ShareToUser extends React.Component {
|
||||||
@@ -103,8 +104,9 @@ class ShareToUser extends React.Component {
|
|||||||
};
|
};
|
||||||
this.options = [];
|
this.options = [];
|
||||||
this.permissions = [];
|
this.permissions = [];
|
||||||
if (this.props.itemType === 'library') {
|
let { itemType, isRepoOwner } = props;
|
||||||
this.permissions = ['rw', 'r', 'admin', 'cloud-edit', 'preview'];
|
if (itemType === 'library') {
|
||||||
|
this.permissions = isRepoOwner ? ['rw', 'r', 'admin', 'cloud-edit', 'preview'] : ['rw', 'r', 'cloud-edit', 'preview'];
|
||||||
} else if (this.props.itemType === 'dir') {
|
} else if (this.props.itemType === 'dir') {
|
||||||
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
this.permissions = ['rw', 'r', 'cloud-edit', 'preview'];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user