Browse Source

web admin: use a textarea for allowed/denied ip mask fields

Fixes #621
Nicola Murino 3 years ago
parent
commit
aeb4675196
2 changed files with 9 additions and 4 deletions
  1. 5 0
      dataprovider/dataprovider.go
  2. 4 4
      templates/webadmin/user.html

+ 5 - 0
dataprovider/dataprovider.go

@@ -1620,18 +1620,21 @@ func checkEmptyFiltersStruct(user *User) {
 
 func validateFilters(user *User) error {
 	checkEmptyFiltersStruct(user)
+	user.Filters.DeniedIP = util.RemoveDuplicates(user.Filters.DeniedIP)
 	for _, IPMask := range user.Filters.DeniedIP {
 		_, _, err := net.ParseCIDR(IPMask)
 		if err != nil {
 			return util.NewValidationError(fmt.Sprintf("could not parse denied IP/Mask %#v : %v", IPMask, err))
 		}
 	}
+	user.Filters.AllowedIP = util.RemoveDuplicates(user.Filters.AllowedIP)
 	for _, IPMask := range user.Filters.AllowedIP {
 		_, _, err := net.ParseCIDR(IPMask)
 		if err != nil {
 			return util.NewValidationError(fmt.Sprintf("could not parse allowed IP/Mask %#v : %v", IPMask, err))
 		}
 	}
+	user.Filters.DeniedLoginMethods = util.RemoveDuplicates(user.Filters.DeniedLoginMethods)
 	if len(user.Filters.DeniedLoginMethods) >= len(ValidLoginMethods) {
 		return util.NewValidationError("invalid denied_login_methods")
 	}
@@ -1640,6 +1643,7 @@ func validateFilters(user *User) error {
 			return util.NewValidationError(fmt.Sprintf("invalid login method: %#v", loginMethod))
 		}
 	}
+	user.Filters.DeniedProtocols = util.RemoveDuplicates(user.Filters.DeniedProtocols)
 	if len(user.Filters.DeniedProtocols) >= len(ValidProtocols) {
 		return util.NewValidationError("invalid denied_protocols")
 	}
@@ -1653,6 +1657,7 @@ func validateFilters(user *User) error {
 			return util.NewValidationError(fmt.Sprintf("invalid TLS username: %#v", user.Filters.TLSUsername))
 		}
 	}
+	user.Filters.WebClient = util.RemoveDuplicates(user.Filters.WebClient)
 	for _, opts := range user.Filters.WebClient {
 		if !util.IsStringInSlice(opts, sdk.WebClientOptions) {
 			return util.NewValidationError(fmt.Sprintf("invalid web client options %#v", opts))

+ 4 - 4
templates/webadmin/user.html

@@ -477,8 +477,8 @@
             <div class="form-group row">
                 <label for="idDeniedIP" class="col-sm-2 col-form-label">Denied IP/Mask</label>
                 <div class="col-sm-10">
-                    <input type="text" class="form-control" id="idDeniedIP" name="denied_ip" placeholder=""
-                        value="{{.User.GetDeniedIPAsString}}" maxlength="255" aria-describedby="deniedIPHelpBlock">
+                    <textarea class="form-control" id="idDeniedIP" name="denied_ip" rows="3" placeholder=""
+                        aria-describedby="deniedIPHelpBlock">{{.User.GetDeniedIPAsString}}</textarea>
                     <small id="deniedIPHelpBlock" class="form-text text-muted">
                         Comma separated IP/Mask in CIDR format, for example "192.168.1.0/24,10.8.0.100/32"
                     </small>
@@ -488,8 +488,8 @@
             <div class="form-group row">
                 <label for="idAllowedIP" class="col-sm-2 col-form-label">Allowed IP/Mask</label>
                 <div class="col-sm-10">
-                    <input type="text" class="form-control" id="idAllowedIP" name="allowed_ip" placeholder=""
-                        value="{{.User.GetAllowedIPAsString}}" maxlength="255" aria-describedby="allowedIPHelpBlock">
+                    <textarea class="form-control" id="idAllowedIP" name="allowed_ip" rows="3" placeholder=""
+                        aria-describedby="allowedIPHelpBlock">{{.User.GetAllowedIPAsString}}</textarea>
                     <small id="allowedIPHelpBlock" class="form-text text-muted">
                         Comma separated IP/Mask in CIDR format, for example "192.168.1.0/24,10.8.0.100/32"
                     </small>