From d76c696420ac1ce514420082e98550c7d8256b13 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Sun, 8 Dec 2024 17:49:02 -0500 Subject: [PATCH] validate module --- services/web/project/__init__.py | 37 +++++++-------------- services/web/project/{static => }/models.py | 0 services/web/project/validate/validate.py | 37 +++++++++++++++++++++ 3 files changed, 49 insertions(+), 25 deletions(-) rename services/web/project/{static => }/models.py (100%) create mode 100644 services/web/project/validate/validate.py diff --git a/services/web/project/__init__.py b/services/web/project/__init__.py index dd52ea6..e0e6d81 100644 --- a/services/web/project/__init__.py +++ b/services/web/project/__init__.py @@ -5,6 +5,11 @@ from functools import wraps import datetime import jwt +import project.validate.validate as validate + + +#from models.models import User + from flask import ( Flask, jsonify, @@ -12,7 +17,7 @@ from flask import ( request, ) from flask_sqlalchemy import SQLAlchemy -from werkzeug.utils import secure_filename +#from werkzeug.utils import secure_filename load_dotenv() @@ -70,6 +75,12 @@ def start_login(): "data": None, "error": "Bad request" }, 400 + # validate input + is_validated = validate.validate_username_and_password(data.get('username'), data.get('password')) + if is_validated is not True: + return dict(message='Invalid data', data=None, error=is_validated), 400 + + GLOBAL_AVG = """SELECT * FROM members WHERE id = 1;""" with connection: @@ -120,27 +131,3 @@ def panel_products(): def recent_actions(): return jsonify(hello="ameye world") - -@app.route("/static/") -def staticfiles(filename): - return send_from_directory(app.config["STATIC_FOLDER"], filename) - - -@app.route("/media/") -def mediafiles(filename): - return send_from_directory(app.config["MEDIA_FOLDER"], filename) - - -@app.route("/upload", methods=["GET", "POST"]) -def upload_file(): - if request.method == "POST": - file = request.files["file"] - filename = secure_filename(file.filename) - file.save(os.path.join(app.config["MEDIA_FOLDER"], filename)) - return """ - - upload new File -
-

-

- """ diff --git a/services/web/project/static/models.py b/services/web/project/models.py similarity index 100% rename from services/web/project/static/models.py rename to services/web/project/models.py diff --git a/services/web/project/validate/validate.py b/services/web/project/validate/validate.py new file mode 100644 index 0000000..ea1074f --- /dev/null +++ b/services/web/project/validate/validate.py @@ -0,0 +1,37 @@ +"""Validator Module""" +import re +#from bson.objectid import ObjectId + +def validate(data, regex): + """Custom Validator""" + return True if re.match(regex, data) else False + +def validate_password(password: str): + """Password Validator""" + reg = r"\b^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,20}$\b" + return validate(password, reg) + +def validate_username(username: str): + if not 6 <= len(username.split(' ')) <= 15: + return { + 'name': 'Username must be between 6 and 15 words' + } + return True + +def validate_username_and_password(username, password): + """Username and Password Validator""" + if not (username and password): + return { + 'username': 'Username is required', + 'password': 'Password is required' + } + if not validate_username(username): + return { + 'email': 'Username is invalid' + } + if not validate_password(password): + return { + 'password': 'Password is invalid, Should be at least 8 characters with \ + upper and lower case letters, numbers and special characters' + } + return True