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