diff --git a/scm-ui/src/components/forms/Checkbox.js b/scm-ui/src/components/forms/Checkbox.js index b37f951e2b..72dfbf4af8 100644 --- a/scm-ui/src/components/forms/Checkbox.js +++ b/scm-ui/src/components/forms/Checkbox.js @@ -4,7 +4,8 @@ import React from "react"; type Props = { label?: string, checked: boolean, - onChange?: boolean => void + onChange?: boolean => void, + disabled?: boolean }; class Checkbox extends React.Component { onCheckboxChange = (event: SyntheticInputEvent) => { @@ -17,11 +18,12 @@ class Checkbox extends React.Component { return (
-
{helper} diff --git a/scm-ui/src/config/components/buttons/RemoveAdminGroupButton.js b/scm-ui/src/config/components/buttons/RemoveAdminGroupButton.js index c7d8f8d85a..c593483409 100644 --- a/scm-ui/src/config/components/buttons/RemoveAdminGroupButton.js +++ b/scm-ui/src/config/components/buttons/RemoveAdminGroupButton.js @@ -3,11 +3,13 @@ import React from "react"; import { DeleteButton } from "../../../components/buttons"; import { translate } from "react-i18next"; import classNames from "classnames"; +import {InputField} from "../../../components/forms"; type Props = { t: string => string, groupname: string, - removeGroup: string => void + removeGroup: string => void, + disabled: boolean }; type State = {}; @@ -16,7 +18,7 @@ type State = {}; class RemoveAdminGroupButton extends React.Component { render() { - const { t , groupname, removeGroup} = this.props; + const { t , groupname, removeGroup, disabled} = this.props; return (
{ event.preventDefault(); removeGroup(groupname); }} + disabled={disabled} />
); diff --git a/scm-ui/src/config/components/buttons/RemoveAdminUserButton.js b/scm-ui/src/config/components/buttons/RemoveAdminUserButton.js index 6bdf06cd28..bd4a02a18a 100644 --- a/scm-ui/src/config/components/buttons/RemoveAdminUserButton.js +++ b/scm-ui/src/config/components/buttons/RemoveAdminUserButton.js @@ -3,20 +3,20 @@ import React from "react"; import { DeleteButton } from "../../../components/buttons"; import { translate } from "react-i18next"; import classNames from "classnames"; +import { InputField } from "../../../components/forms"; type Props = { t: string => string, username: string, - removeUser: string => void + removeUser: string => void, + disabled: boolean }; type State = {}; - - class RemoveAdminUserButton extends React.Component { render() { - const { t , username, removeUser} = this.props; + const { t, username, removeUser, disabled } = this.props; return (
{ event.preventDefault(); removeUser(username); }} + disabled={disabled} />
); diff --git a/scm-ui/src/config/components/buttons/RemoveProxyExcludeButton.js b/scm-ui/src/config/components/buttons/RemoveProxyExcludeButton.js index ba177024fe..acdfd6292a 100644 --- a/scm-ui/src/config/components/buttons/RemoveProxyExcludeButton.js +++ b/scm-ui/src/config/components/buttons/RemoveProxyExcludeButton.js @@ -8,7 +8,7 @@ type Props = { t: string => string, proxyExcludeName: string, removeProxyExclude: string => void, - disable: boolean + disabled: boolean }; type State = {}; @@ -26,7 +26,7 @@ class RemoveProxyExcludeButton extends React.Component { event.preventDefault(); removeProxyExclude(proxyExcludeName); }} - disabled={this.props.disable} + disabled={this.props.disabled} />
); diff --git a/scm-ui/src/config/components/fields/AddAdminGroupField.js b/scm-ui/src/config/components/fields/AddAdminGroupField.js index ed694355d8..0991056b66 100644 --- a/scm-ui/src/config/components/fields/AddAdminGroupField.js +++ b/scm-ui/src/config/components/fields/AddAdminGroupField.js @@ -7,7 +7,8 @@ import InputField from "../../../components/forms/InputField"; type Props = { t: string => string, - addGroup: string => void + addGroup: string => void, + disabled: boolean }; type State = { @@ -25,7 +26,7 @@ class AddAdminGroupField extends React.Component { } render() { - const { t } = this.props; + const { t, disabled } = this.props; return (
{ validationError={false} value={this.state.groupToAdd} onReturnPressed={this.appendGroup} + disabled={disabled} />
diff --git a/scm-ui/src/config/components/fields/AddAdminUserField.js b/scm-ui/src/config/components/fields/AddAdminUserField.js index 116144ff3c..025ed6cb4d 100644 --- a/scm-ui/src/config/components/fields/AddAdminUserField.js +++ b/scm-ui/src/config/components/fields/AddAdminUserField.js @@ -7,11 +7,12 @@ import InputField from "../../../components/forms/InputField"; type Props = { t: string => string, - addUser: string => void + addUser: string => void, + disabled: boolean }; type State = { - userToAdd: string, + userToAdd: string //validationError: boolean }; @@ -19,27 +20,28 @@ class AddAdminUserField extends React.Component { constructor(props) { super(props); this.state = { - userToAdd: "", + userToAdd: "" //validationError: false }; } render() { - const { t } = this.props; + const { t, disabled } = this.props; return (
@@ -62,7 +64,7 @@ class AddAdminUserField extends React.Component { handleAddUserChange = (username: string) => { this.setState({ ...this.state, - userToAdd: username, + userToAdd: username //validationError: membername.length > 0 && !isMemberNameValid(membername) }); }; diff --git a/scm-ui/src/config/components/fields/AddProxyExcludeField.js b/scm-ui/src/config/components/fields/AddProxyExcludeField.js index c76d8ae807..bb7e005b02 100644 --- a/scm-ui/src/config/components/fields/AddProxyExcludeField.js +++ b/scm-ui/src/config/components/fields/AddProxyExcludeField.js @@ -2,17 +2,17 @@ import React from "react"; import { translate } from "react-i18next"; -import {AddButton} from "../../../components/buttons"; +import { AddButton } from "../../../components/buttons"; import InputField from "../../../components/forms/InputField"; type Props = { t: string => string, addProxyExclude: string => void, - disable: boolean + disabled: boolean }; type State = { - proxyExcludeToAdd: string, + proxyExcludeToAdd: string //validationError: boolean }; @@ -20,7 +20,7 @@ class AddProxyExcludeField extends React.Component { constructor(props) { super(props); this.state = { - proxyExcludeToAdd: "", + proxyExcludeToAdd: "" //validationError: false }; } @@ -30,19 +30,18 @@ class AddProxyExcludeField extends React.Component { return (
@@ -65,7 +64,7 @@ class AddProxyExcludeField extends React.Component { handleAddProxyExcludeChange = (username: string) => { this.setState({ ...this.state, - proxyExcludeToAdd: username, + proxyExcludeToAdd: username //validationError: membername.length > 0 && !isMemberNameValid(membername) }); }; diff --git a/scm-ui/src/config/components/form/AdminSettings.js b/scm-ui/src/config/components/form/AdminSettings.js index dcde12f91f..b7a39f234c 100644 --- a/scm-ui/src/config/components/form/AdminSettings.js +++ b/scm-ui/src/config/components/form/AdminSettings.js @@ -11,12 +11,13 @@ type Props = { adminGroups: string[], adminUsers: string[], t: string => string, - onChange: (boolean, any, string) => void + onChange: (boolean, any, string) => void, + hasUpdatePermission: boolean }; class AdminSettings extends React.Component { render() { - const { t, adminGroups, adminUsers } = this.props; + const { t, adminGroups, adminUsers, hasUpdatePermission } = this.props; return (
@@ -26,15 +27,19 @@ class AdminSettings extends React.Component { onChange={(isValid, changedValue, name) => this.props.onChange(isValid, changedValue, name) } + disabled={!hasUpdatePermission} + /> + - this.props.onChange(isValid, changedValue, name) } + disabled={!hasUpdatePermission} + /> + -
); } diff --git a/scm-ui/src/config/components/form/BaseUrlSettings.js b/scm-ui/src/config/components/form/BaseUrlSettings.js index cde4680b48..e7b80ed924 100644 --- a/scm-ui/src/config/components/form/BaseUrlSettings.js +++ b/scm-ui/src/config/components/form/BaseUrlSettings.js @@ -8,12 +8,13 @@ type Props = { baseUrl: string, forceBaseUrl: boolean, t: string => string, - onChange: (boolean, any, string) => void + onChange: (boolean, any, string) => void, + hasUpdatePermission: boolean }; class BaseUrlSettings extends React.Component { render() { - const { t, baseUrl, forceBaseUrl } = this.props; + const { t, baseUrl, forceBaseUrl, hasUpdatePermission } = this.props; return (
@@ -22,11 +23,13 @@ class BaseUrlSettings extends React.Component { checked={forceBaseUrl} label={t("base-url-settings.force-base-url")} onChange={this.handleForceBaseUrlChange} + disabled={!hasUpdatePermission} />
); diff --git a/scm-ui/src/config/components/form/ConfigForm.js b/scm-ui/src/config/components/form/ConfigForm.js index 4d05a816a4..db0a79e7bf 100644 --- a/scm-ui/src/config/components/form/ConfigForm.js +++ b/scm-ui/src/config/components/form/ConfigForm.js @@ -66,9 +66,8 @@ class ConfigForm extends React.Component { }; render() { - const { loading, t } = this.props; + const { loading, t, configUpdatePermission } = this.props; let config = this.state.config; - return (
{ onChange={(isValid, changedValue, name) => this.onChange(isValid, changedValue, name) } + hasUpdatePermission={configUpdatePermission} />
{ onChange={(isValid, changedValue, name) => this.onChange(isValid, changedValue, name) } + hasUpdatePermission={configUpdatePermission} />
{ onChange={(isValid, changedValue, name) => this.onChange(isValid, changedValue, name) } + hasUpdatePermission={configUpdatePermission} />
{ onChange={(isValid, changedValue, name) => this.onChange(isValid, changedValue, name) } + hasUpdatePermission={configUpdatePermission} />
); diff --git a/scm-ui/src/config/components/form/GeneralSettings.js b/scm-ui/src/config/components/form/GeneralSettings.js index 29db1e5288..321f247a2a 100644 --- a/scm-ui/src/config/components/form/GeneralSettings.js +++ b/scm-ui/src/config/components/form/GeneralSettings.js @@ -16,7 +16,8 @@ type Props = { enabledXsrfProtection: boolean, defaultNamespaceStrategy: string, t: string => string, - onChange: (boolean, any, string) => void + onChange: (boolean, any, string) => void, + hasUpdatePermission: boolean }; class GeneralSettings extends React.Component { @@ -33,7 +34,8 @@ class GeneralSettings extends React.Component { pluginUrl, loginAttemptLimitTimeout, enabledXsrfProtection, - defaultNamespaceStrategy + defaultNamespaceStrategy, + hasUpdatePermission } = this.props; return ( @@ -42,56 +44,67 @@ class GeneralSettings extends React.Component { label={t("general-settings.realm-description")} onChange={this.handleRealmDescriptionChange} value={realmDescription} + disabled={!hasUpdatePermission} /> ); diff --git a/scm-ui/src/config/components/form/ProxySettings.js b/scm-ui/src/config/components/form/ProxySettings.js index 0a8666f805..c21d4e807f 100644 --- a/scm-ui/src/config/components/form/ProxySettings.js +++ b/scm-ui/src/config/components/form/ProxySettings.js @@ -14,7 +14,8 @@ type Props = { enableProxy: boolean, proxyExcludes: string[], //TODO: einbauen! t: string => string, - onChange: (boolean, any, string) => void + onChange: (boolean, any, string) => void, + hasUpdatePermission: boolean }; class ProxySettings extends React.Component { @@ -26,7 +27,8 @@ class ProxySettings extends React.Component { proxyServer, proxyUser, enableProxy, - proxyExcludes + proxyExcludes, + hasUpdatePermission } = this.props; return ( @@ -36,39 +38,43 @@ class ProxySettings extends React.Component { checked={enableProxy} label={t("proxy-settings.enable-proxy")} onChange={this.handleEnableProxyChange} + disabled={!hasUpdatePermission} /> this.props.onChange(isValid, changedValue, name) } - disable={!enableProxy} + disabled={!enableProxy || !hasUpdatePermission} + /> + - ); } diff --git a/scm-ui/src/config/components/table/AdminGroupTable.js b/scm-ui/src/config/components/table/AdminGroupTable.js index 94e54ba747..d5566e7ce1 100644 --- a/scm-ui/src/config/components/table/AdminGroupTable.js +++ b/scm-ui/src/config/components/table/AdminGroupTable.js @@ -6,14 +6,15 @@ import RemoveAdminGroupButton from "../buttons/RemoveAdminGroupButton"; type Props = { adminGroups: string[], t: string => string, - onChange: (boolean, any, string) => void + onChange: (boolean, any, string) => void, + disabled: boolean }; type State = {}; class AdminGroupTable extends React.Component { render() { - const { t } = this.props; + const { t, disabled } = this.props; return (
@@ -27,6 +28,7 @@ class AdminGroupTable extends React.Component { diff --git a/scm-ui/src/config/components/table/AdminUserTable.js b/scm-ui/src/config/components/table/AdminUserTable.js index 8f1cbe11c4..9a840351e0 100644 --- a/scm-ui/src/config/components/table/AdminUserTable.js +++ b/scm-ui/src/config/components/table/AdminUserTable.js @@ -2,18 +2,20 @@ import React from "react"; import { translate } from "react-i18next"; import RemoveAdminUserButton from "../buttons/RemoveAdminUserButton"; +import { InputField } from "../../../components/forms"; type Props = { adminUsers: string[], t: string => string, - onChange: (boolean, any, string) => void + onChange: (boolean, any, string) => void, + disabled: boolean }; type State = {}; class AdminUserTable extends React.Component { render() { - const { t } = this.props; + const { t, disabled } = this.props; return (
@@ -27,6 +29,7 @@ class AdminUserTable extends React.Component { diff --git a/scm-ui/src/config/components/table/ProxyExcludesTable.js b/scm-ui/src/config/components/table/ProxyExcludesTable.js index b8102c4f63..ccee16cea5 100644 --- a/scm-ui/src/config/components/table/ProxyExcludesTable.js +++ b/scm-ui/src/config/components/table/ProxyExcludesTable.js @@ -7,7 +7,7 @@ type Props = { proxyExcludes: string[], t: string => string, onChange: (boolean, any, string) => void, - disable: boolean + disabled: boolean }; type State = {}; @@ -28,7 +28,7 @@ class ProxyExcludesTable extends React.Component { diff --git a/scm-ui/src/config/containers/GlobalConfig.js b/scm-ui/src/config/containers/GlobalConfig.js index 5d18f86226..f76a71c11b 100644 --- a/scm-ui/src/config/containers/GlobalConfig.js +++ b/scm-ui/src/config/containers/GlobalConfig.js @@ -71,6 +71,7 @@ class GlobalConfig extends React.Component { submitForm={config => this.modifyConfig(config)} config={config} loading={loading} + configUpdatePermission={configUpdatePermission} />
);