diff --git a/packages/strapi-admin/admin/src/utils/fakePermissionsData.js b/packages/strapi-admin/admin/src/utils/fakePermissionsData.js
index 231e103ffc..c1ad1b536b 100644
--- a/packages/strapi-admin/admin/src/utils/fakePermissionsData.js
+++ b/packages/strapi-admin/admin/src/utils/fakePermissionsData.js
@@ -372,18 +372,18 @@ const data = {
fields: null,
conditions: [],
},
- // {
- // action: 'plugins::documentation.settings.update',
- // subject: null,
- // fields: null,
- // conditions:[],
- // },
- // {
- // action: 'plugins::documentation.settings.regenerate',
- // subject: null,
- // fields: null,
- // conditions:[],
- // },
+ {
+ action: 'plugins::documentation.settings.update',
+ subject: null,
+ fields: null,
+ conditions: [],
+ },
+ {
+ action: 'plugins::documentation.settings.regenerate',
+ subject: null,
+ fields: null,
+ conditions: [],
+ },
// Upload plugin
{
diff --git a/packages/strapi-plugin-documentation/admin/src/components/Row/ButtonContainer.js b/packages/strapi-plugin-documentation/admin/src/components/Row/ButtonContainer.js
index 9554f738b1..521eb73ad2 100755
--- a/packages/strapi-plugin-documentation/admin/src/components/Row/ButtonContainer.js
+++ b/packages/strapi-plugin-documentation/admin/src/components/Row/ButtonContainer.js
@@ -1,16 +1,12 @@
import React from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
+import { WithPermissions } from 'strapi-helper-plugin';
+import pluginPermissions from '../../permissions';
import openWithNewTab from '../../utils/openWithNewTab';
import { StyledButton } from './components';
-const ButtonContainer = ({
- currentDocVersion,
- isHeader,
- onClick,
- onClickDelete,
- version,
-}) => {
+const ButtonContainer = ({ currentDocVersion, isHeader, onClick, onClickDelete, version }) => {
if (isHeader) {
return
;
}
@@ -23,16 +19,17 @@ const ButtonContainer = ({
>
- onClick(version)}
- >
-
-
- onClickDelete(version)}
- />
+
+ onClick(version)}>
+
+
+
+
+ onClickDelete(version)}
+ />
+
);
};
diff --git a/packages/strapi-plugin-documentation/admin/src/containers/App/index.js b/packages/strapi-plugin-documentation/admin/src/containers/App/index.js
index bed27c950d..5f1db7d082 100755
--- a/packages/strapi-plugin-documentation/admin/src/containers/App/index.js
+++ b/packages/strapi-plugin-documentation/admin/src/containers/App/index.js
@@ -7,7 +7,7 @@
import React from 'react';
import { Switch, Route } from 'react-router-dom';
-import { NotFound, WithPagePermissions } from 'strapi-helper-plugin';
+import { NotFound, WithPagePermissions, useUser } from 'strapi-helper-plugin';
// Utils
import pluginPermissions from '../../permissions';
import pluginId from '../../pluginId';
@@ -15,11 +15,17 @@ import pluginId from '../../pluginId';
import HomePage from '../HomePage';
function App() {
+ const userPermissions = useUser();
+
return (
-
+ }
+ exact
+ />
diff --git a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js
index f7cbad66f9..f3a0a20b69 100755
--- a/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js
+++ b/packages/strapi-plugin-documentation/admin/src/containers/HomePage/index.js
@@ -17,9 +17,11 @@ import {
LoadingIndicatorPage,
InputsIndex as Input,
GlobalContext,
+ hasPermissions,
} from 'strapi-helper-plugin';
import pluginId from '../../pluginId';
+import pluginPermissions from '../../permissions';
import getTrad from '../../utils/getTrad';
import Block from '../../components/Block';
@@ -41,10 +43,37 @@ import selectHomePage from './selectors';
import saga from './saga';
export class HomePage extends React.Component {
+ state = { canOpen: false, canUpdate: false };
+
componentDidMount() {
this.props.getDocInfos();
+ this.getPermissions();
}
+ getPermissions = async () => {
+ const { userPermissions } = this.props;
+
+ const checkPermissions = async permissionName => {
+ const hasPermission = await hasPermissions(
+ userPermissions,
+ pluginPermissions[permissionName]
+ );
+
+ return hasPermission;
+ };
+
+ const generateArrayOfPromises = array =>
+ array.map(permissionName => checkPermissions(permissionName));
+
+ try {
+ const [canOpen, canUpdate] = await Promise.all(generateArrayOfPromises(['open', 'update']));
+
+ this.setState({ canOpen, canUpdate });
+ } catch (err) {
+ console.error(err);
+ }
+ };
+
getRestrictedAccessValue = () => {
const { form } = this.props;
@@ -52,8 +81,11 @@ export class HomePage extends React.Component {
};
getPluginHeaderActions = () => {
- return [
- {
+ const { canOpen, canUpdate } = this.state;
+ const actions = [];
+
+ if (canOpen) {
+ actions.push({
color: 'none',
label: this.context.formatMessage({
id: getTrad('containers.HomePage.Button.open'),
@@ -62,8 +94,11 @@ export class HomePage extends React.Component {
onClick: this.openCurrentDocumentation,
type: 'button',
key: 'button-open',
- },
- {
+ });
+ }
+
+ if (canUpdate) {
+ actions.push({
label: this.context.formatMessage({
id: getTrad('containers.HomePage.Button.update'),
}),
@@ -71,8 +106,10 @@ export class HomePage extends React.Component {
onClick: () => {},
type: 'submit',
key: 'button-submit',
- },
- ];
+ });
+ }
+
+ return actions;
};
handleCopy = () => {
@@ -142,6 +179,7 @@ export class HomePage extends React.Component {
onSubmit,
versionToDelete,
} = this.props;
+
const { formatMessage } = this.context;
if (isLoading) {
@@ -220,6 +258,7 @@ HomePage.defaultProps = {
onSubmit: () => {},
onUpdateDoc: () => {},
prefix: '/documentation',
+ userPermissions: [],
versionToDelete: '',
};
@@ -237,6 +276,7 @@ HomePage.propTypes = {
onSubmit: PropTypes.func,
onUpdateDoc: PropTypes.func,
prefix: PropTypes.string,
+ userPermissions: PropTypes.array,
versionToDelete: PropTypes.string,
};
diff --git a/packages/strapi-plugin-documentation/admin/src/permissions.js b/packages/strapi-plugin-documentation/admin/src/permissions.js
index ff7e888080..47c9366051 100644
--- a/packages/strapi-plugin-documentation/admin/src/permissions.js
+++ b/packages/strapi-plugin-documentation/admin/src/permissions.js
@@ -5,9 +5,15 @@ const pluginPermissions = {
// plugin directly in the browser
main: [
{ action: 'plugins::documentation.read', subject: null },
- { action: 'plugins::documentation.regenerate', subject: null },
- { action: 'plugins::documentation.update', subject: null },
+ { action: 'plugins::documentation.settings.regenerate', subject: null },
+ { action: 'plugins::documentation.settings.update', subject: null },
],
+ open: [
+ { action: 'plugins::documentation.read', subject: null },
+ { action: 'plugins::documentation.settings.regenerate', subject: null },
+ ],
+ regenerate: [{ action: 'plugins::documentation.settings.regenerate', subject: null }],
+ update: [{ action: 'plugins::documentation.settings.update', subject: null }],
};
export default pluginPermissions;