diff --git a/portals/publisher/src/main/webapp/site/public/locales/en.json b/portals/publisher/src/main/webapp/site/public/locales/en.json index bfd42eaa6b4..91bc13dd823 100644 --- a/portals/publisher/src/main/webapp/site/public/locales/en.json +++ b/portals/publisher/src/main/webapp/site/public/locales/en.json @@ -785,6 +785,11 @@ "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.oauth.grant.type.password": "Resource Owner Password", "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.password.input": "Password", "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.password.message": "Enter Password", + "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyHost.input": "Proxy Hostname", + "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyPassword.input": "Proxy Password", + "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyPort.input": "Proxy Port", + "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyProtocol.input": "Proxy Protocol", + "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.proxyUsername.input": "Proxy Username", "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.socket.\n timeout.duration": "Socket Timeout Duration (ms)", "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.token.endpoint.\n connection.configurations": "Token Endpoint Connection Configurations", "Apis.Details.Endpoints.GeneralConfiguration.EndpointSecurity.token.url.input": "Token URL", diff --git a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx index afb239ef10f..a8af4c6f460 100644 --- a/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx +++ b/portals/publisher/src/main/webapp/source/src/app/components/Apis/Details/Endpoints/GeneralConfiguration/EndpointSecurity.jsx @@ -23,6 +23,9 @@ import { ListItem, ListItemAvatar, ListItemText, + Switch, + FormGroup, + FormControlLabel, } from '@mui/material'; import { FormattedMessage, injectIntl } from 'react-intl'; import Table from '@mui/material/Table'; @@ -103,6 +106,17 @@ function EndpointSecurity(props) { intl, securityInfo, onChangeEndpointAuth, isProduction, saveEndpointSecurityConfig, closeEndpointSecurityConfig, } = props; const [endpointSecurityInfo, setEndpointSecurityInfo] = useState(CONSTS.DEFAULT_ENDPOINT_SECURITY); + + if (!(securityInfo?.proxyConfigs != null)) { + securityInfo.proxyConfigs = { + proxyEnabled: false, + proxyHost: '', + proxyPort: '', + proxyUsername: '', + proxyPassword: '', + proxyProtocol: '', + }; + } const [securityValidity, setSecurityValidity] = useState(); const [showAddParameter, setShowAddParameter] = useState(false); @@ -189,7 +203,7 @@ function EndpointSecurity(props) { tmpSecurity = { ...securityInfo }; const { type, username, password, grantType, tokenUrl, clientId, clientSecret, customParameters, - connectionTimeoutDuration, connectionRequestTimeoutDuration, socketTimeoutDuration, + connectionTimeoutDuration, connectionRequestTimeoutDuration, socketTimeoutDuration, proxyConfigs, } = securityInfo; const secretPlaceholder = '******'; tmpSecurity.type = type === null ? 'NONE' : type; @@ -203,6 +217,7 @@ function EndpointSecurity(props) { tmpSecurity.connectionTimeoutDuration = connectionTimeoutDuration; tmpSecurity.connectionRequestTimeoutDuration = connectionRequestTimeoutDuration; tmpSecurity.socketTimeoutDuration = socketTimeoutDuration; + tmpSecurity.proxyConfigs = proxyConfigs; } setEndpointSecurityInfo(tmpSecurity); }, [securityInfo]); @@ -727,6 +742,178 @@ function EndpointSecurity(props) { )} + + + + { + endpointSecurityInfo.proxyConfigs.proxyEnabled = event.target.checked; + setEndpointSecurityInfo({ ...endpointSecurityInfo }); + validateAndUpdateSecurityInfo('proxyEnabled'); + }} + checked={endpointSecurityInfo.proxyConfigs.proxyEnabled} + /> + )} + label='Proxy Configurations' + /> + + + + + + )} + onChange={(event) => { + endpointSecurityInfo.proxyConfigs.proxyHost = event.target.value; + setEndpointSecurityInfo({ ...endpointSecurityInfo }); + validateAndUpdateSecurityInfo('proxyConfigs'); + }} + value={endpointSecurityInfo.proxyConfigs.proxyHost} + onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')} + /> + + + + )} + onChange={(event) => { + endpointSecurityInfo.proxyConfigs.proxyPort = event.target.value; + setEndpointSecurityInfo({ ...endpointSecurityInfo }); + validateAndUpdateSecurityInfo('proxyConfigs'); + }} + value={endpointSecurityInfo.proxyConfigs.proxyPort} + onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')} + /> + + + + )} + onChange={(event) => { + endpointSecurityInfo.proxyConfigs.proxyUsername = event.target.value; + setEndpointSecurityInfo({ ...endpointSecurityInfo }); + validateAndUpdateSecurityInfo('proxyConfigs'); + }} + value={endpointSecurityInfo.proxyConfigs.proxyUsername} + onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')} + /> + + + + )} + onChange={(event) => { + endpointSecurityInfo.proxyConfigs.proxyPassword = event.target.value; + setEndpointSecurityInfo({ ...endpointSecurityInfo }); + validateAndUpdateSecurityInfo('proxyConfigs'); + }} + value={endpointSecurityInfo.proxyConfigs.proxyPassword} + onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')} + /> + + + + )} + onChange={(event) => { + endpointSecurityInfo.proxyConfigs.proxyProtocol = event.target.value; + setEndpointSecurityInfo({ ...endpointSecurityInfo }); + validateAndUpdateSecurityInfo('proxyConfigs'); + }} + value={endpointSecurityInfo.proxyConfigs.proxyProtocol} + onBlur={() => validateAndUpdateSecurityInfo('proxyConfigs')} + /> +