From 7091cbcbd270e05652b17e3494aab910f3912e02 Mon Sep 17 00:00:00 2001 From: Darksider3 Date: Mon, 21 Oct 2019 13:07:30 +0200 Subject: [PATCH] Validator: checkName taken from registration form --- private/lib/validator.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/private/lib/validator.py b/private/lib/validator.py index e1e58f9..5678416 100644 --- a/private/lib/validator.py +++ b/private/lib/validator.py @@ -3,7 +3,7 @@ import pwd import lib.sqlitedb -def checkUsernameCharacters(username: str): +def checkUsernameCharacters(username: str) -> bool: if " " not in username and "_" not in username and username.isascii() and username[:1].islower() and \ not username[0].isnumeric(): if not re.search(r"\W+", username): @@ -12,7 +12,7 @@ def checkUsernameCharacters(username: str): return False -def checkUsernameLength(username: str): +def checkUsernameLength(username: str) -> bool: if len(username) > 16: return False if len(username) < 3: @@ -20,7 +20,7 @@ def checkUsernameLength(username: str): return True -def checkUserExists(username: str): +def checkUserExists(username: str) -> bool: try: pwd.getpwnam(username) except KeyError: @@ -29,7 +29,7 @@ def checkUserExists(username: str): return False -def checkUserInDB(username: str, db: str): +def checkUserInDB(username: str, db: str) -> bool: try: ldb = lib.sqlitedb.SQLitedb(db) fetched = ldb.safequery("SELECT * FROM 'applications' WHERE username = ?", tuple([username])) @@ -40,7 +40,7 @@ def checkUserInDB(username: str, db: str): return False -def checkSSHKey(key: str): +def checkSSHKey(key: str) -> bool: # taken from https://github.com/hashbang/provisor/blob/master/provisor/utils.py, all belongs to them! ;) import base64 if len(key) > 8192 or len(key) < 80: @@ -59,14 +59,14 @@ def checkSSHKey(key: str): return True -def checkEmail(mail: str): +def checkEmail(mail: str) -> bool: if not re.match("(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", mail): return False else: return True -def checkDatetimeFormat(form: str): +def checkDatetimeFormat(form: str) -> bool : import datetime try: datetime.datetime.strptime(form, "%Y-%m-%d %H:%M:%S") @@ -75,7 +75,14 @@ def checkDatetimeFormat(form: str): return True -def checkImportFile(fname: str, db: str): +def checkName(name: str) -> bool: + if not re.match("\w+\s*\w", name): + return False + else: + return True + + +def checkImportFile(fname: str, db: str) -> bool: error_list = str() valid = True ln = 1 # line number @@ -84,6 +91,10 @@ def checkImportFile(fname: str, db: str): reador = csv.DictReader(f) for row in reador: # if any of this fails move on to the next user, just print a relatively helpful message lel + if not lib.validator.checkName(row["name"]): + error_list += f"Line{ln}: {row['name']} seems not legit. Character followed by character should be " \ + f"correct.\n" + valid = False if not lib.validator.checkUsernameCharacters(row["username"]): error_list += (f"Line {ln}: Username contains unsupported characters or starts with a number: '" f"{row['username']}'.\n")