Skip to content

Commit 121c33a

Browse files
authored
Merge pull request #860 from ShakyaPr/fixes/add_role_issue
Already added roles not visible in GW environment issue
2 parents 308b4cd + ad3f806 commit 121c33a

File tree

1 file changed

+31
-12
lines changed

1 file changed

+31
-12
lines changed

portals/admin/src/main/webapp/source/src/app/components/GatewayEnvironments/AddEditGWEnvironment.jsx

+31-12
Original file line numberDiff line numberDiff line change
@@ -141,16 +141,18 @@ function AddEditGWEnvironment(props) {
141141
const [invalidRoles, setInvalidRoles] = useState([]);
142142
const [roleValidity, setRoleValidity] = useState(true);
143143
const { gatewayTypes } = settings;
144-
const [initialState, setInitialState] = useState({
145-
displayName: '',
146-
description: '',
147-
gatewayType: gatewayTypes && gatewayTypes.length > 1 ? 'Regular' : gatewayTypes[0],
148-
type: 'hybrid',
149-
vhosts: [defaultVhost],
150-
permissions: {
151-
roles: [],
152-
permissionType: 'PUBLIC',
153-
},
144+
const initialPermissions = dataRow && dataRow.permissions
145+
? dataRow.permissions
146+
: { roles: [], permissionType: 'PUBLIC' };
147+
const [initialState, setInitialState] = useState(() => {
148+
return {
149+
displayName: '',
150+
description: '',
151+
gatewayType: gatewayTypes && gatewayTypes.length > 1 ? 'Regular' : gatewayTypes[0],
152+
type: 'hybrid',
153+
vhosts: [defaultVhost],
154+
permissions: initialPermissions,
155+
};
154156
});
155157
const [editMode, setIsEditMode] = useState(false);
156158

@@ -159,6 +161,14 @@ function AddEditGWEnvironment(props) {
159161
name, displayName, description, vhosts, type, gatewayType, permissions,
160162
} = state;
161163

164+
const [roles, setRoles] = useState([]);
165+
166+
useEffect(() => {
167+
if (permissions && permissions.roles) {
168+
setRoles(permissions.roles);
169+
}
170+
}, [permissions]);
171+
162172
let permissionType = '';
163173
if (permissions) {
164174
permissionType = state.permissions.permissionType;
@@ -170,6 +180,8 @@ function AddEditGWEnvironment(props) {
170180
if (invalidRolesArray.length === 0) {
171181
setRoleValidity(true);
172182
}
183+
} else if (roles.includes(role)) {
184+
setRoles(roles.filter((existingRole) => existingRole !== role));
173185
} else {
174186
setValidRoles(validRoles.filter((existingRole) => existingRole !== role));
175187
}
@@ -180,6 +192,12 @@ function AddEditGWEnvironment(props) {
180192
const promise = restApi.validateSystemRole(base64url.encode(role));
181193
promise
182194
.then(() => {
195+
// Check if the role is already added
196+
if (roles.includes(role) || validRoles.includes(role) || invalidRoles.includes(role)) {
197+
Alert.error('Role already added: ' + role);
198+
return;
199+
}
200+
183201
setValidRoles(validRoles.concat(role));
184202
if (invalidRoles.length === 0) {
185203
setRoleValidity(true);
@@ -197,6 +215,7 @@ function AddEditGWEnvironment(props) {
197215
}
198216
});
199217
};
218+
200219
const onChange = (e) => {
201220
if (e.target.name === 'GatewayPermissionRestrict') {
202221
permissionType = e.target.value;
@@ -398,7 +417,7 @@ function AddEditGWEnvironment(props) {
398417
});
399418
}
400419
permissions.permissionType = state.permissions.permissionType;
401-
permissions.roles = validRoles;
420+
permissions.roles = roles.concat(validRoles);
402421
let promiseAPICall;
403422
if (dataRow) {
404423
// assign the update promise to the promiseAPICall
@@ -761,7 +780,7 @@ function AddEditGWEnvironment(props) {
761780
}}
762781
name='GatewayEnvironmentPermissions'
763782
variant='outlined'
764-
value={validRoles.concat(invalidRoles)}
783+
value={roles.concat(validRoles, invalidRoles)}
765784
alwaysShowPlaceholder={false}
766785
placeholder='Enter roles and press Enter'
767786
blurBehavior='clear'

0 commit comments

Comments
 (0)