members model

This commit is contained in:
CHIEFSOFT\ameye
2024-12-08 18:13:34 -05:00
parent 85776af561
commit 30b81936d6
4 changed files with 107 additions and 102 deletions
+5 -1
View File
@@ -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;"""
-100
View File
@@ -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
+101
View File
@@ -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
+1 -1
View File
@@ -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)