Files

65 lines
2.0 KiB
Python

from argon2 import PasswordHasher
import db
from models import User
import logging
#Logging
logging.basicConfig(
filename='auth/user.log', # Log to a file
level=logging.DEBUG, # Log everything (DEBUG and above)
format='%(asctime)s %(levelname)s %(message)s'
)
logging.info('Application started')
try:
logging.debug('Debug info here')
except Exception as e:
logging.exception('An error occurred')
session = db.session
def create_user(username, password, role):
user = username
passwd = PasswordHasher().hash(password)
new_item = User(username=user, password=passwd, role=role)
def check_login(username, password):
result = session.query(User.password).filter_by(username=username).first()
hash_passwd = result[0] if result else None
valid = False
try:
valid = PasswordHasher().verify(hash_passwd, password)
if valid == True:
return valid
except Exception as e:
logging.error(e)
return False
def delete_user(username, password):
result = session.query(User.password).filter_by(username=username).first()
hash_password = result[0] if result else None
valid = False
try:
valid = PasswordHasher().verify(hash_password, password)
except Exception as e:
logging.error(e)
if valid == True:
try:
session.query(User).filter_by(username=username).delete()
session.commit()
logging.info(f"User {username} was successfully deleted")
except Exception as e:
logging.error(e)
def check_username(username):
try:
exists = session.query(User).filter_by(username=username).first() is not None
return exists # True if taken, False if available
except db.IntegrityError as e:
if e.errno == 1062:
logging.error("Username taken")
return True #If the username is not available it returns True
def get_role(username):
result = session.query(User.role).filter_by(username=username).first()
return result[0] if result else None