aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2016-12-23 16:19:54 +0100
committerGitHub <noreply@github.com>2016-12-23 16:19:54 +0100
commited2fff193eca9e5407e42a32e54eef02daca0fb7 (patch)
tree29093fd442888ffa5446dba6142ab93d3290ab7a /server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js
parentcc65eb695394d533c0124c53742a5bb36f948a70 (diff)
downloadsonarqube-ed2fff193eca9e5407e42a32e54eef02daca0fb7.tar.gz
sonarqube-ed2fff193eca9e5407e42a32e54eef02daca0fb7.zip
SONAR-8554 Load and display page extensions (#1482)
Diffstat (limited to 'server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js')
-rw-r--r--server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js b/server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js
new file mode 100644
index 00000000000..5ffef1f5908
--- /dev/null
+++ b/server/sonar-web/src/main/js/app/components/ProjectAdminContainer.js
@@ -0,0 +1,66 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+import React from 'react';
+import { connect } from 'react-redux';
+import { getComponent } from '../../store/rootReducer';
+import handleRequiredAuthorization from '../utils/handleRequiredAuthorization';
+
+class ProjectAdminContainer extends React.Component {
+ props: {
+ project: {
+ configuration?: {
+ showSettings: boolean
+ }
+ }
+ };
+
+ componentDidMount () {
+ this.checkPermissions();
+ }
+
+ componentDidUpdate () {
+ this.checkPermissions();
+ }
+
+ isProjectAdmin () {
+ const { configuration } = this.props.project;
+ return configuration != null && configuration.showSettings;
+ }
+
+ checkPermissions () {
+ if (!this.isProjectAdmin()) {
+ handleRequiredAuthorization();
+ }
+ }
+
+ render () {
+ if (!this.isProjectAdmin()) {
+ return null;
+ }
+
+ return this.props.children;
+ }
+}
+
+const mapStateToProps = (state, ownProps) => ({
+ project: getComponent(state, ownProps.location.query.id)
+});
+
+export default connect(mapStateToProps)(ProjectAdminContainer);