mirror of
https://github.com/hrfee/jellyfin-accounts.git
synced 2024-12-22 09:00:14 +00:00
Harvey Tindall
4df78a22c5
Fixed an issue where some criteria on the form page wouldn't change to red or green when one set one of them to 0 in the config. Also added a lowercase option.
50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
specials = ['[', '@', '_', '!', '#', '$', '%', '^', '&', '*', '(', ')',
|
|
'<', '>', '?', '/', '\\', '|', '}', '{', '~', ':', ']']
|
|
|
|
class PasswordValidator:
|
|
def __init__(self, min_length, upper, lower, number, special):
|
|
self.criteria = {'characters': int(min_length),
|
|
'uppercase characters': int(upper),
|
|
'lowercase characters': int(lower),
|
|
'numbers': int(number),
|
|
'special characters': int(special)}
|
|
def validate(self, password):
|
|
count = {'characters': 0,
|
|
'uppercase characters': 0,
|
|
'lowercase characters': 0,
|
|
'numbers': 0,
|
|
'special characters': 0}
|
|
for c in password:
|
|
count['characters'] += 1
|
|
if c.isupper():
|
|
count['uppercase characters'] += 1
|
|
elif c.islower():
|
|
count['lowercase characters'] += 1
|
|
elif c.isnumeric():
|
|
count['numbers'] += 1
|
|
elif c in specials:
|
|
count['special characters'] += 1
|
|
for criterion in count:
|
|
if count[criterion] < self.criteria[criterion]:
|
|
count[criterion] = False
|
|
else:
|
|
count[criterion] = True
|
|
return count
|
|
def getCriteria(self):
|
|
lines = {}
|
|
for criterion in self.criteria:
|
|
min = self.criteria[criterion]
|
|
if min > 0:
|
|
text = f"Must have at least {min} "
|
|
if min == 1:
|
|
text += criterion[:-1]
|
|
else:
|
|
text += criterion
|
|
lines[criterion] = text
|
|
return lines
|
|
|
|
|
|
|
|
|
|
|