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/dataValidations.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/dataValidations.go')
| -rw-r--r-- | go-src/windows/dataValidations.go | 55 |
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, ' ', '\'', '-') +} |
