diff --git a/ui/login/login.go b/ui/login/login.go index c55d4a7..317f6e5 100644 --- a/ui/login/login.go +++ b/ui/login/login.go @@ -61,15 +61,18 @@ func NewLogin() State { t.Focus() t.CharLimit = 40 t.TextStyle = FocusedStyle + t.Validate = NoSpacesValidation case 1: t.Placeholder = "Port" t.CharLimit = 5 + t.Validate = ValidatePort case 2: t.Placeholder = "Channel" t.CharLimit = 32 case 3: t.Placeholder = "Nickname" t.CharLimit = 32 + t.Validate = NoSpacesValidation case 4: t.Placeholder = "Password" t.CharLimit = 64 diff --git a/ui/login/validators.go b/ui/login/validators.go new file mode 100644 index 0000000..797b56e --- /dev/null +++ b/ui/login/validators.go @@ -0,0 +1,44 @@ +// gorc project +// Copyright (C) 2023 IllusionMan1212 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, see https://www.gnu.org/licenses. + +package login + +import ( + "errors" + "strconv" + "strings" +) + +func NoSpacesValidation(input string) error { + if strings.Contains(input, " ") { + return errors.New("Field cannot contain spaces") + } + + return nil +} + +func ValidatePort(input string) error { + pNum, err := strconv.ParseUint(input, 10, 16) + if err != nil { + return err + } + + if pNum < 1 || pNum > 65535 { + return errors.New("Invalid port number") + } + + return nil +}