diff --git a/scm-ui/src/config/containers/GlobalPermissionRoleForm.js b/scm-ui/src/config/containers/GlobalPermissionRoleForm.js index f92a212d20..77e743d22b 100644 --- a/scm-ui/src/config/containers/GlobalPermissionRoleForm.js +++ b/scm-ui/src/config/containers/GlobalPermissionRoleForm.js @@ -14,11 +14,10 @@ import { import { getRepositoryVerbsLink } from "../../modules/indexResource"; type Props = { - submitForm: CustomRoleRequest => void, role?: Role, loading?: boolean, + disabled: boolean, availableVerbs: string[], - selectedVerbs: string[], verbsLink: string, // context objects @@ -29,8 +28,7 @@ type Props = { }; type State = { - role: Role, - verbs: string[] + role: Role }; class GlobalPermissionRoleForm extends React.Component { @@ -43,8 +41,7 @@ class GlobalPermissionRoleForm extends React.Component { verbs: [], system: false, _links: {} - }, - verbs: props.availableVerbs + } }; } @@ -53,7 +50,12 @@ class GlobalPermissionRoleForm extends React.Component { fetchAvailableVerbs(verbsLink); if (role) { - this.setState({ role: { ...role } }); + this.setState({ + role: { + ...role, + role: { verbs: role.verbs } + } + }); } } @@ -80,26 +82,44 @@ class GlobalPermissionRoleForm extends React.Component { }; handleVerbChange = (value: boolean, name: string) => { - const { selectedVerbs } = this.props; - const newVerbs = { ...selectedVerbs, [name]: value }; - this.setState({ verbs: newVerbs }); + const { role } = this.state; + + const newVerbs = value + ? [...role.verbs, name] + : role.verbs.filter(v => v !== name); + + this.setState({ + ...this.state, + role: { + ...role, + verbs: newVerbs + } + }); + }; + + submit = (event: Event) => { + event.preventDefault(); + if (this.isValid()) { + // this.props.submitForm(this.state.role); + //TODO ADD createRole here + } }; render() { - const { loading, availableVerbs, t } = this.props; - const { role, verbs } = this.state; + const { loading, availableVerbs, disabled, t } = this.props; + const { role } = this.state; - const verbSelectBoxes = - !!availableVerbs && - Object.entries(availableVerbs).map(e => ( - - )); + const verbSelectBoxes = !availableVerbs + ? null + : availableVerbs.map(verb => ( + + )); return (
@@ -110,17 +130,18 @@ class GlobalPermissionRoleForm extends React.Component { label={t("roles.create.name")} onChange={this.handleNameChange} value={role.name ? role.name : ""} - disabled={!!role.name} // || disabled + disabled={!!role.name || disabled} /> <>{verbSelectBoxes} +
diff --git a/scm-ui/src/config/modules/roles.js b/scm-ui/src/config/modules/roles.js index 7088d46fb8..8d9c99f0bc 100644 --- a/scm-ui/src/config/modules/roles.js +++ b/scm-ui/src/config/modules/roles.js @@ -220,12 +220,7 @@ function verbReducer(state: any = {}, action: any = {}) { switch (action.type) { case FETCH_VERBS_SUCCESS: const verbs = action.payload.verbs; - const verbMap = {}; - verbs.forEach(p => (verbMap[p] = false)); - return { - ...state, - verbMap - }; + return { ...state, verbs }; default: return state; }