From 769b33348afbd5ce6d53046d1bb38076f842fd21 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 5 Jul 2021 11:23:03 +0300 Subject: Implemented data validations for window inputs and improved how registration window functions --- go-src/windows/dataValidations.go | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 go-src/windows/dataValidations.go (limited to 'go-src/windows/dataValidations.go') 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, ' ', '\'', '-') +} -- cgit v1.2.3