summaryrefslogtreecommitdiff
path: root/vendor/github.com/wagslane/go-password-validator/base.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-08-12 21:03:24 +0200
committerLibravatar GitHub <noreply@github.com>2021-08-12 21:03:24 +0200
commit98263a7de64269898a2f81207e38943b5c8e8653 (patch)
tree743c90f109a6c5d27832d1dcef2388d939f0f77a /vendor/github.com/wagslane/go-password-validator/base.go
parentText duplication fix (#137) (diff)
downloadgotosocial-98263a7de64269898a2f81207e38943b5c8e8653.tar.xz
Grand test fixup (#138)
* start fixing up tests * fix up tests + automate with drone * fiddle with linting * messing about with drone.yml * some more fiddling * hmmm * add cache * add vendor directory * verbose * ci updates * update some little things * update sig
Diffstat (limited to 'vendor/github.com/wagslane/go-password-validator/base.go')
-rw-r--r--vendor/github.com/wagslane/go-password-validator/base.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/vendor/github.com/wagslane/go-password-validator/base.go b/vendor/github.com/wagslane/go-password-validator/base.go
new file mode 100644
index 000000000..0e0cedca2
--- /dev/null
+++ b/vendor/github.com/wagslane/go-password-validator/base.go
@@ -0,0 +1,75 @@
+package passwordvalidator
+
+import "strings"
+
+const (
+ replaceChars = `!@$&*`
+ sepChars = `_-., `
+ otherSpecialChars = `"#%'()+/:;<=>?[\]^{|}~`
+ lowerChars = `abcdefghijklmnopqrstuvwxyz`
+ upperChars = `ABCDEFGHIJKLMNOPQRSTUVWXYZ`
+ digitsChars = `0123456789`
+)
+
+func getBase(password string) int {
+ chars := map[rune]struct{}{}
+ for _, c := range password {
+ chars[c] = struct{}{}
+ }
+
+ hasReplace := false
+ hasSep := false
+ hasOtherSpecial := false
+ hasLower := false
+ hasUpper := false
+ hasDigits := false
+ base := 0
+
+ for c := range chars {
+ if strings.ContainsRune(replaceChars, c) {
+ hasReplace = true
+ continue
+ }
+ if strings.ContainsRune(sepChars, c) {
+ hasSep = true
+ continue
+ }
+ if strings.ContainsRune(otherSpecialChars, c) {
+ hasOtherSpecial = true
+ continue
+ }
+ if strings.ContainsRune(lowerChars, c) {
+ hasLower = true
+ continue
+ }
+ if strings.ContainsRune(upperChars, c) {
+ hasUpper = true
+ continue
+ }
+ if strings.ContainsRune(digitsChars, c) {
+ hasDigits = true
+ continue
+ }
+ base++
+ }
+
+ if hasReplace {
+ base += len(replaceChars)
+ }
+ if hasSep {
+ base += len(sepChars)
+ }
+ if hasOtherSpecial {
+ base += len(otherSpecialChars)
+ }
+ if hasLower {
+ base += len(lowerChars)
+ }
+ if hasUpper {
+ base += len(upperChars)
+ }
+ if hasDigits {
+ base += len(digitsChars)
+ }
+ return base
+}