From a6874f202b6cec7d506783c9949a7665516dab87 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Mon, 5 Nov 2018 16:49:23 -0500 Subject: [PATCH] Allow empty DHCP settings if DHCP is not enabled Previously you could put any values in the DHCP settings if it was disabled. Now you must have either valid settings or empty settings when DHCP is disabled. This avoids sending arbitrary setting strings to the API. Signed-off-by: Mcat12 --- src/components/settings/DHCPInfo.js | 55 ++++++++++++++++++++--------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/src/components/settings/DHCPInfo.js b/src/components/settings/DHCPInfo.js index b178b36..c5a345c 100644 --- a/src/components/settings/DHCPInfo.js +++ b/src/components/settings/DHCPInfo.js @@ -29,7 +29,7 @@ class DHCPInfo extends Component { ip_start: "", ip_end: "", router_ip: "", - lease_time: 24, + lease_time: "", domain: "", ipv6_support: false }; @@ -93,14 +93,36 @@ class DHCPInfo extends Component { // TODO: send settings to API }; + /** + * Settings are valid if the value is valid or if DHCP is disabled and the value is empty. + * + * @param value the value to check + * @param validator the validation function + */ + isSettingValid = (value, validator) => { + return (!this.state.active && value.length === 0) || validator(value); + }; + render() { const { t } = this.props; - const isIpStartValid = isValidIpv4(this.state.ip_start); - const isIpEndValid = isValidIpv4(this.state.ip_end); - const isRouterIpValid = isValidIpv4(this.state.router_ip); - const isLeaseTimeValid = isPositiveNumber(this.state.lease_time); - const isDomainValid = isValidHostname(this.state.domain); + const isIpStartValid = this.isSettingValid( + this.state.ip_start, + isValidIpv4 + ); + const isIpEndValid = this.isSettingValid(this.state.ip_end, isValidIpv4); + const isRouterIpValid = this.isSettingValid( + this.state.router_ip, + isValidIpv4 + ); + const isLeaseTimeValid = this.isSettingValid( + this.state.lease_time, + isPositiveNumber + ); + const isDomainValid = this.isSettingValid( + this.state.domain, + isValidHostname + ); return (
@@ -124,7 +146,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.ip_start} onChange={this.onChange("ip_start", "value")} - invalid={this.state.active && !isIpStartValid} + invalid={!isIpStartValid} /> @@ -138,7 +160,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.ip_end} onChange={this.onChange("ip_end", "value")} - invalid={this.state.active && !isIpEndValid} + invalid={!isIpEndValid} /> @@ -152,7 +174,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.router_ip} onChange={this.onChange("router_ip", "value")} - invalid={this.state.active && !isRouterIpValid} + invalid={!isRouterIpValid} /> @@ -167,7 +189,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.lease_time} onChange={this.onChange("lease_time", "value")} - invalid={this.state.active && !isLeaseTimeValid} + invalid={!isLeaseTimeValid} /> Hours @@ -183,7 +205,7 @@ class DHCPInfo extends Component { disabled={!this.state.active} value={this.state.domain} onChange={this.onChange("domain", "value")} - invalid={this.state.active && !isDomainValid} + invalid={!isDomainValid} /> @@ -201,12 +223,11 @@ class DHCPInfo extends Component {