|
|
@@ -408,12 +408,26 @@ type ClientCreatePayload struct {
|
|
|
InboundIds []int `json:"inboundIds"`
|
|
|
}
|
|
|
|
|
|
-func validateClientEmail(email string) error {
|
|
|
- for _, r := range email {
|
|
|
+func hasForbiddenClientChar(s string) bool {
|
|
|
+ for _, r := range s {
|
|
|
if r == '/' || r == '\\' || r == ' ' || r < 0x20 || r == 0x7f {
|
|
|
- return common.NewError("client email contains an invalid character:", email)
|
|
|
+ return true
|
|
|
}
|
|
|
}
|
|
|
+ return false
|
|
|
+}
|
|
|
+
|
|
|
+func validateClientEmail(email string) error {
|
|
|
+ if hasForbiddenClientChar(email) {
|
|
|
+ return common.NewError("client email contains an invalid character:", email)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func validateClientSubID(subID string) error {
|
|
|
+ if hasForbiddenClientChar(subID) {
|
|
|
+ return common.NewError("client subId contains an invalid character:", subID)
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
@@ -428,6 +442,9 @@ func (s *ClientService) Create(inboundSvc *InboundService, payload *ClientCreate
|
|
|
if err := validateClientEmail(client.Email); err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
+ if err := validateClientSubID(client.SubID); err != nil {
|
|
|
+ return false, err
|
|
|
+ }
|
|
|
if len(payload.InboundIds) == 0 {
|
|
|
return false, common.NewError("at least one inbound is required")
|
|
|
}
|
|
|
@@ -596,6 +613,9 @@ func (s *ClientService) Update(inboundSvc *InboundService, id int, updated model
|
|
|
if err := validateClientEmail(updated.Email); err != nil {
|
|
|
return false, err
|
|
|
}
|
|
|
+ if err := validateClientSubID(updated.SubID); err != nil {
|
|
|
+ return false, err
|
|
|
+ }
|
|
|
if updated.SubID == "" {
|
|
|
updated.SubID = existing.SubID
|
|
|
}
|