aboutsummaryrefslogtreecommitdiff
path: root/go-src/windows/dataValidations.go
diff options
context:
space:
mode:
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, ' ', '\'', '-')
+}