1
0
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:
shanshuirenjia
2019-06-20 17:13:15 +08:00
parent 4979571104
commit d1c8a5cc50
3 changed files with 33 additions and 11 deletions

View File

@@ -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 (

View File

@@ -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) {

View File

@@ -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'];
} }