members model
This commit is contained in:
@@ -6,6 +6,7 @@ import datetime
|
|||||||
import jwt
|
import jwt
|
||||||
|
|
||||||
import project.validate.validate as validate
|
import project.validate.validate as validate
|
||||||
|
import project.models.members as members
|
||||||
|
|
||||||
|
|
||||||
#from models.models import User
|
#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'))
|
is_validated = validate.validate_username_and_password(data.get('username'), data.get('password'))
|
||||||
if is_validated is not True:
|
if is_validated is not True:
|
||||||
return dict(message='Invalid data', data=None, error=is_validated), 400
|
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;"""
|
GLOBAL_AVG = """SELECT * FROM members WHERE id = 1;"""
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
@@ -8,7 +8,7 @@ def validate(data, regex):
|
|||||||
|
|
||||||
def validate_password(password: str):
|
def validate_password(password: str):
|
||||||
"""Password Validator"""
|
"""Password Validator"""
|
||||||
print(password)
|
# print(password)
|
||||||
reg = r"\b^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,20}$\b"
|
reg = r"\b^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!#%*?&]{8,20}$\b"
|
||||||
return validate(password, reg)
|
return validate(password, reg)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user