aboutsummaryrefslogtreecommitdiff
path: root/go-src/windows/dataValidations.go
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2021-07-05 11:23:03 +0300
committerSyndamia <kamen.d.mladenov@protonmail.com>2021-07-05 11:23:03 +0300
commit769b33348afbd5ce6d53046d1bb38076f842fd21 (patch)
tree1530a82b3cac63ec4967e78c2ce9deaa6468ab1a /go-src/windows/dataValidations.go
parent2255a314aaa19948f42c19c1d459c9838fce6c23 (diff)
downloadctfc-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/dataValidations.go')
-rw-r--r--go-src/windows/dataValidations.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/go-src/windows/dataValidations.go b/go-src/windows/dataValidations.go
new file mode 100644
index 0000000..3df61c1
--- /dev/null
+++ b/go-src/windows/dataValidations.go
@@ -0,0 +1,55 @@
+package windows
+
+import (
+ "regexp"
+)
+
+var SpecialCharacters = []rune{'!', '@', '#', '$', '%', '^', '&', '*'}
+
+// Inclusive minimum and maximum
+func StringValidLength(min int, max int, value string) bool {
+ return len(value) >= min && len(value) <= max
+}
+
+func StringValidCharacters(value string, letters bool, numbers bool, special ...rune) bool {
+ expr := "^["
+ if letters {
+ expr += "A-z"
+ }
+ if numbers {
+ expr += "0-9"
+ }
+ for _, v := range special {
+ expr += string(v)
+ }
+ expr += "]+$"
+
+ return regexp.MustCompile(expr).MatchString(value)
+}
+
+func StringValidRuneAmount(value string, runeStart rune, runeEnd rune, minAmount int) bool {
+ var sum int
+ for _, v := range value {
+ if v >= runeStart && v <= runeEnd {
+ sum++
+ }
+ }
+ return sum >= minAmount
+}
+
+func StringValidUsername(value string) bool {
+ return StringValidLength(2, 40, value) &&
+ StringValidCharacters(value, true, true, '.', '*', '_', '-') &&
+ (StringValidRuneAmount(value, 'A', 'Z', 1) || StringValidRuneAmount(value, 'a', 'z', 1))
+}
+
+func StringValidPassword(value string) bool {
+ return StringValidLength(5, 40, value) &&
+ StringValidCharacters(value, true, true, SpecialCharacters...) &&
+ StringValidRuneAmount(value, '0', '9', 1)
+}
+
+func StringValidName(value string) bool {
+ return StringValidLength(2, 60, value) &&
+ StringValidCharacters(value, true, false, ' ', '\'', '-')
+}