diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-05 11:23:03 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-07-05 11:23:03 +0300 |
| commit | 769b33348afbd5ce6d53046d1bb38076f842fd21 (patch) | |
| tree | 1530a82b3cac63ec4967e78c2ce9deaa6468ab1a /go-src/windows/windows.go | |
| parent | 2255a314aaa19948f42c19c1d459c9838fce6c23 (diff) | |
| download | ctfc-769b33348afbd5ce6d53046d1bb38076f842fd21.tar ctfc-769b33348afbd5ce6d53046d1bb38076f842fd21.tar.gz ctfc-769b33348afbd5ce6d53046d1bb38076f842fd21.zip | |
Implemented data validations for window inputs and improved how registration window functions
Diffstat (limited to 'go-src/windows/windows.go')
| -rw-r--r-- | go-src/windows/windows.go | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/go-src/windows/windows.go b/go-src/windows/windows.go index 5076053..5db54d1 100644 --- a/go-src/windows/windows.go +++ b/go-src/windows/windows.go @@ -10,7 +10,7 @@ import ( "gitlab.com/Syndamia/ctfc/go-src/ui" ) -func StartupWindow() { +func StartupWindow(...string) { clearScreen() fmt.Println(ui.NormalBox(true, "Login", "Register")) @@ -22,8 +22,7 @@ func StartupWindow() { } else if command == "r" { defer RegisterWindow() } else { - ShowError(invalidCommand) - defer StartupWindow() + defer ShowError(invalidCommand, StartupWindow) } } @@ -42,11 +41,10 @@ func LoginWindow(values ...string) { val := ui.GetInput() - switch len(values) { - case 0: + if len(values) == 0 { defer LoginWindow(val) - case 1: - fmt.Println(values[0], val) + } else { + defer fmt.Println(values[0], val) } } @@ -55,37 +53,48 @@ func RegisterWindow(values ...string) { fmt.Println(ui.NormalBox(true, "Register")) + var validationF func(string) bool + var fieldName, specification string + switch len(values) { case 0: - fmt.Print(ui.InputField("Username")) + validationF = StringValidUsername + fieldName, specification = "Username", "[A-z, 0-9, *, ., _, -; at least 1 letter]" case 1: fmt.Println(ui.InputFieldFilled("Username", values[0])) - fmt.Print(ui.InputField("Password")) + validationF = StringValidPassword + fieldName, specification = "Password", "[5-40 characters; at least 1 number]" case 2: fmt.Println(ui.InputFieldFilled("Username", values[0])) fmt.Println(ui.InputFieldFilled("Password", values[1])) - fmt.Print(ui.InputField("Name")) + validationF = StringValidName + fieldName, specification = "Name", "[2-60 characters]" } + fmt.Print(ui.InputField(fieldName + " " + specification)) val := ui.GetInput() - switch len(values) { - case 0: - defer RegisterWindow(val) - case 1: - defer RegisterWindow(values[0], val) - case 2: - fmt.Println(values, val) + if validationF(val) { + values = append(values, val) + if len(values) != 3 { + defer RegisterWindow(values...) + } else { // When user has entered all required values + defer fmt.Println(values) + } + } else { + defer ShowError(invalidValueFor(fieldName), RegisterWindow, values...) } } var clearNext = true -func ShowError(message string) { +func ShowError(message string, callback func(...string), callbackData ...string) { clearScreen() fmt.Println(ui.ErrorBox(message)) clearNext = false + + defer callback(callbackData...) } func clearScreen() { |
