From acdb157282ac4705d8ec3ffab75b6bba2cc08550 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 5 Jul 2021 16:47:10 +0300 Subject: Changed file structure and implemented rester file creation and login check --- go-src/dataValidations.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 go-src/dataValidations.go (limited to 'go-src/dataValidations.go') diff --git a/go-src/dataValidations.go b/go-src/dataValidations.go new file mode 100644 index 0000000..b391eb3 --- /dev/null +++ b/go-src/dataValidations.go @@ -0,0 +1,55 @@ +package ctfc + +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