added logging system

This commit is contained in:
Nick Leeman 2022-10-09 14:27:22 +02:00
parent 6398dcdf1b
commit 8a09d27bf4
6 changed files with 41 additions and 14 deletions

View File

@ -1,13 +1,28 @@
from models.database import Database from models.database import Database
from models.user import User from models.user import User
from services.log import LogService
class Auth: class Auth:
failed_attempts = 0
@staticmethod
def check_auth(username, password): def check_auth(username, password):
if username == "superadmin" and password == "Admin321!": if username == "superadmin" and password == "Admin321!":
su_user = User(None, -1, "superadmin", "", "", "", "", "", "", "", "", "SUPER_ADMIN") su_user = User(None, -1, "superadmin", "", "", "", "", "", "", "", "", "SUPER_ADMIN")
LogService.create_log(username, "Logged in", "", False)
Auth.failed_attempts = 0
return su_user return su_user
user = User(Database.connection, None, username) user = User(Database.connection, None, username)
if user.load_by_username() and user.password == password: if user.load_by_username() and user.password == password:
LogService.create_log(username, "Logged in", "", False)
Auth.failed_attempts = 0
return user return user
if Auth.failed_attempts >= 3:
LogService.create_log(username, "Multiple unsuccessful logins", "", True)
else:
LogService.create_log(username, "Unsuccessful login", f"Attempts: {Auth.failed_attempts}", False)
Auth.failed_attempts += 1
return None return None

View File

@ -1,4 +1,3 @@
from ast import Import
from models.user import User from models.user import User
class State: class State:

View File

@ -1,6 +1,8 @@
from models.database import Database from models.database import Database
from models.user import User from models.user import User
from services.state import State
from services.log import LogService
from services.search import Search from services.search import Search
from ui.input_menu import InputMenu, Validator from ui.input_menu import InputMenu, Validator
from ui.selection_menu import SelectionMenu from ui.selection_menu import SelectionMenu
@ -83,6 +85,7 @@ class AdvisorMenu:
) )
new_user.save() new_user.save()
LogService.create_log(State.CURRENT_USER.username, "Created advisor", f"Advisor: {new_user.username}", True)
input("Added new Advisor! Press any key to return.") input("Added new Advisor! Press any key to return.")
@staticmethod @staticmethod
@ -114,6 +117,7 @@ class AdvisorMenu:
user.phone = edit_form.get_value("PHONE") user.phone = edit_form.get_value("PHONE")
user.update() user.update()
LogService.create_log(State.CURRENT_USER.username, "Updated advisor", f"Advisor: {user.username}", True)
input("Updated Advisor! Press any key to return.") input("Updated Advisor! Press any key to return.")
@staticmethod @staticmethod
@ -129,6 +133,7 @@ class AdvisorMenu:
user.password = form.get_value("PASSWORD") user.password = form.get_value("PASSWORD")
user.update() user.update()
LogService.create_log(State.CURRENT_USER.username, "Updated password of advisor", f"Advisor: {user.username}", True)
input("Updated Advisor Password! Press any key to return.") input("Updated Advisor Password! Press any key to return.")
@staticmethod @staticmethod
@ -144,6 +149,7 @@ class AdvisorMenu:
if option == True: if option == True:
user.delete() user.delete()
LogService.create_log(State.CURRENT_USER.username, "Deleted advisor", f"Advisor: {user.username}", True)
input("Deleted Advisor! Press any key to return.") input("Deleted Advisor! Press any key to return.")
@staticmethod @staticmethod

View File

@ -23,11 +23,12 @@ class MainMenu:
if State.CURRENT_USER.role == "SYSTEM_ADMIN" or State.CURRENT_USER.role == "SUPER_ADMIN": if State.CURRENT_USER.role == "SYSTEM_ADMIN" or State.CURRENT_USER.role == "SUPER_ADMIN":
main_menu.add_option("Manage Advisors", MainMenu.manage_advisors) main_menu.add_option("Manage Advisors", MainMenu.manage_advisors)
main_menu.add_option("View logs", MainMenu.check_logs)
if State.CURRENT_USER.role == "SUPER_ADMIN": if State.CURRENT_USER.role == "SUPER_ADMIN":
main_menu.add_option("Manage Admins", MainMenu.manage_admins) main_menu.add_option("Manage Admins", MainMenu.manage_admins)
main_menu.add_option("Manage Backups", MainMenu.manage_backups) main_menu.add_option("Manage Backups", MainMenu.manage_backups)
main_menu.add_option("Exit...", None) main_menu.add_option("Exit...", None)
selected_option = main_menu.display().input_option() selected_option = main_menu.display().input_option()
@ -128,19 +129,14 @@ class MainMenu:
def check_logs(): def check_logs():
Utils.clear_screen() Utils.clear_screen()
menu = SelectionMenu(f"Do you want to view the latest logs?")
menu.add_option("Yes", True)
menu.add_option("No", False)
selected_option = menu.display().input_option()
if selected_option == False:
return
logs = LogService.get_latest_logs() logs = LogService.get_latest_logs()
print("==================================================================")
print("| id | Date | Time | Description Activity | Addition Information | Suspicious |")
for log in logs: for log in logs:
print(f"{log.id} | {log.date} | {log.time} | {log.description} | {log.additional_information} | {log.suspicious}") print(f"/--[ {log.id} ]---------")
print("==================================================================") print(f"| Username: {log.username}")
print(f"| Description: {log.description}")
print(f"| Additional Information: {log.additional_information}")
print(f"| Suspicious: {log.suspicious}")
print(f"| Date: {log.date} {log.time}")
print(f"\-------------\n")
input("Press any key to continue.") input("Press any key to continue.")

View File

@ -1,6 +1,8 @@
from models.database import Database from models.database import Database
from models.user import User from models.user import User
from services.state import State
from services.log import LogService
from services.search import Search from services.search import Search
from ui.input_menu import InputMenu, Validator from ui.input_menu import InputMenu, Validator
from ui.selection_menu import SelectionMenu from ui.selection_menu import SelectionMenu
@ -82,6 +84,7 @@ class MemberMenu:
) )
new_user.save() new_user.save()
LogService.create_log(State.CURRENT_USER.username, "Added member", f"Member: {new_user.firstname} {new_user.lastname}", False)
input("Added new Member! Press any key to return.") input("Added new Member! Press any key to return.")
@staticmethod @staticmethod
@ -112,6 +115,7 @@ class MemberMenu:
user.phone = edit_form.get_value("PHONE") user.phone = edit_form.get_value("PHONE")
user.update() user.update()
LogService.create_log(State.CURRENT_USER.username, "Updated member", f"Member: {user.firstname} {user.lastname}", False)
input("Updated Member! Press any key to return.") input("Updated Member! Press any key to return.")
@staticmethod @staticmethod
@ -124,6 +128,7 @@ class MemberMenu:
if option == True: if option == True:
user.delete() user.delete()
LogService.create_log(State.CURRENT_USER.username, "Removed member", f"Member: {user.firstname} {user.lastname}", False)
input("Deleted Member! Press any key to return.") input("Deleted Member! Press any key to return.")
@staticmethod @staticmethod

View File

@ -1,6 +1,8 @@
from models.database import Database from models.database import Database
from models.user import User from models.user import User
from services.state import State
from services.log import LogService
from services.search import Search from services.search import Search
from ui.input_menu import InputMenu, Validator from ui.input_menu import InputMenu, Validator
from ui.selection_menu import SelectionMenu from ui.selection_menu import SelectionMenu
@ -83,6 +85,7 @@ class SystemAdminMenu:
) )
new_user.save() new_user.save()
LogService.create_log(State.CURRENT_USER.username, "Added system admin", f"System Admin: {new_user.username}", False)
input("Added new system admin! Press any key to return.") input("Added new system admin! Press any key to return.")
@staticmethod @staticmethod
@ -118,6 +121,7 @@ class SystemAdminMenu:
user.phone = edit_form.get_value("PHONE") user.phone = edit_form.get_value("PHONE")
user.update() user.update()
LogService.create_log(State.CURRENT_USER.username, "Updated system admin", f"System Admin: {user.username}", False)
input("Updated System Admin! Press any key to return.") input("Updated System Admin! Press any key to return.")
@staticmethod @staticmethod
@ -133,6 +137,7 @@ class SystemAdminMenu:
user.password = form.get_value("PASSWORD") user.password = form.get_value("PASSWORD")
user.update() user.update()
LogService.create_log(State.CURRENT_USER.username, "Updated password system admin", f"System Admin: {user.username}", False)
input("Updated System Admin password! Press any key to return.") input("Updated System Admin password! Press any key to return.")
@staticmethod @staticmethod
@ -145,6 +150,7 @@ class SystemAdminMenu:
if option == True: if option == True:
user.delete() user.delete()
LogService.create_log(State.CURRENT_USER.username, "Removed system admin", f"System Admin: {user.username}", False)
input("Deleted advisor! Press any key to return.") input("Deleted advisor! Press any key to return.")
@staticmethod @staticmethod