From 30b81936d68d68f7866780518f136f3a4ac4a827 Mon Sep 17 00:00:00 2001 From: "CHIEFSOFT\\ameye" Date: Sun, 8 Dec 2024 18:13:34 -0500 Subject: [PATCH] members model --- services/web/project/__init__.py | 6 +- services/web/project/models.py | 100 --------------------- services/web/project/models/members.py | 101 ++++++++++++++++++++++ services/web/project/validate/validate.py | 2 +- 4 files changed, 107 insertions(+), 102 deletions(-) delete mode 100644 services/web/project/models.py create mode 100644 services/web/project/models/members.py diff --git a/services/web/project/__init__.py b/services/web/project/__init__.py index e0e6d81..d8d6c9e 100644 --- a/services/web/project/__init__.py +++ b/services/web/project/__init__.py @@ -6,6 +6,7 @@ import datetime import jwt import project.validate.validate as validate +import project.models.members as members #from models.models import User @@ -79,7 +80,10 @@ def start_login(): 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 - + member = members().login( + data["username"], + data["password"] + ) GLOBAL_AVG = """SELECT * FROM members WHERE id = 1;""" diff --git a/services/web/project/models.py b/services/web/project/models.py deleted file mode 100644 index 278d761..0000000 --- a/services/web/project/models.py +++ /dev/null @@ -1,100 +0,0 @@ -"""Application Models""" -import bson, os -from dotenv import load_dotenv -from werkzeug.security import generate_password_hash, check_password_hash -import psycopg2 - -load_dotenv() - -# DATABASE_URL=os.environ.get('DATABASE_URL') or 'mongodb://localhost:27017/myDatabase' -# print(DATABASE_URL) -# client = MongoClient(DATABASE_URL) -# db = client.myDatabase - -dataUrl = os.getenv("DATABASE_URL") -db = psycopg2.connect(dataUrl) - - -class User: - """User Model""" - def __init__(self): - return - - def create(self, name="", email="", password=""): - """Create a new user""" - user = self.get_by_email(email) - if user: - return - new_user = db.users.insert_one( - { - "name": name, - "email": email, - "password": self.encrypt_password(password), - "active": True - } - ) - return self.get_by_id(new_user.inserted_id) - - def get_all(self): - """Get all users""" - users = db.users.find({"active": True}) - return [{**user, "_id": str(user["_id"])} for user in users] - - def get_by_id(self, user_id): - """Get a user by id""" - user = db.users.find_one({"_id": bson.ObjectId(user_id), "active": True}) - if not user: - return - user["_id"] = str(user["_id"]) - user.pop("password") - return user - - def get_by_email(self, email): - """Get a user by email""" - user = db.users.find_one({"email": email, "active": True}) - if not user: - return - user["_id"] = str(user["_id"]) - return user - - def update(self, user_id, name=""): - """Update a user""" - data = {} - if name: - data["name"] = name - user = db.users.update_one( - {"_id": bson.ObjectId(user_id)}, - { - "$set": data - } - ) - user = self.get_by_id(user_id) - return user - - def delete(self, user_id): - """Delete a user""" - Books().delete_by_user_id(user_id) - user = db.users.delete_one({"_id": bson.ObjectId(user_id)}) - user = self.get_by_id(user_id) - return user - - def disable_account(self, user_id): - """Disable a user account""" - user = db.users.update_one( - {"_id": bson.ObjectId(user_id)}, - {"$set": {"active": False}} - ) - user = self.get_by_id(user_id) - return user - - def encrypt_password(self, password): - """Encrypt password""" - return generate_password_hash(password) - - def login(self, email, password): - """Login a user""" - user = self.get_by_email(email) - if not user or not check_password_hash(user["password"], password): - return - user.pop("password") - return user diff --git a/services/web/project/models/members.py b/services/web/project/models/members.py new file mode 100644 index 0000000..68dae51 --- /dev/null +++ b/services/web/project/models/members.py @@ -0,0 +1,101 @@ +"""Application Members Models""" +import os +# bson, +from dotenv import load_dotenv +from werkzeug.security import generate_password_hash, check_password_hash +import psycopg2 + +load_dotenv() + +# DATABASE_URL=os.environ.get('DATABASE_URL') or 'mongodb://localhost:27017/myDatabase' +# print(DATABASE_URL) +# client = MongoClient(DATABASE_URL) +# db = client.myDatabase + +dataUrl = os.getenv("DATABASE_URL") +db = psycopg2.connect(dataUrl) + + +class Members: + """User Model""" + def __init__(self): + return + + def create(self, name="", email="", password=""): + """Create a new user""" + user = self.get_by_email(email) + if user: + return + new_user = db.users.insert_one( + { + "name": name, + "email": email, + "password": self.encrypt_password(password), + "active": True + } + ) + return self.get_by_id(new_user.inserted_id) + + def get_all(self): + """Get all users""" + users = db.users.find({"active": True}) + return [{**user, "_id": str(user["_id"])} for user in users] + +# def get_by_id(self, user_id): +# """Get a user by id""" +# user = db.users.find_one({"_id": bson.ObjectId(user_id), "active": True}) +# if not user: +# return +# user["_id"] = str(user["_id"]) +# user.pop("password") +# return user + + def get_by_username(self, username): + """Get a user by username""" + member = db.members.find_one({"username": username, "active": True}) + if not member: + return + member["_id"] = str(member["id"]) + return member + +# def update(self, user_id, name=""): +# """Update a user""" +# data = {} +# if name: +# data["name"] = name +# user = db.users.update_one( +# {"_id": bson.ObjectId(user_id)}, +# { +# "$set": data +# } +# ) +# user = self.get_by_id(user_id) +# return user +# +# def delete(self, user_id): +# """Delete a user""" +# Books().delete_by_user_id(user_id) +# user = db.users.delete_one({"_id": bson.ObjectId(user_id)}) +# user = self.get_by_id(user_id) +# return user +# +# def disable_account(self, user_id): +# """Disable a user account""" +# user = db.users.update_one( +# {"_id": bson.ObjectId(user_id)}, +# {"$set": {"active": False}} +# ) +# user = self.get_by_id(user_id) +# return user + + def encrypt_password(self, password): + """Encrypt password""" + return generate_password_hash(password) + + def login(self, username, password): + """Login a user""" + member = self.get_by_username(username) + if not member or not check_password_hash(member["password"], password): + return + member.pop("password") + return member diff --git a/services/web/project/validate/validate.py b/services/web/project/validate/validate.py index 1c40d88..b6641e9 100644 --- a/services/web/project/validate/validate.py +++ b/services/web/project/validate/validate.py @@ -8,7 +8,7 @@ def validate(data, regex): def validate_password(password: str): """Password Validator""" - print(password) + # print(password) reg = r"\b^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,20}$\b" return validate(password, reg)