aboutsummaryrefslogtreecommitdiff
path: root/go-src/windows/windows.go
diff options
context:
space:
mode:
Diffstat (limited to 'go-src/windows/windows.go')
-rw-r--r--go-src/windows/windows.go45
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() {